⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 receiver.java

📁 手机无线网络纸牌游戏源代码。非常适合学习使用
💻 JAVA
字号:
// Receiver.java
//
// Copyright (c) 2000-2001 Symbian Ltd. All rights reserved

package com.symbian.devnet.whist.tokenRing;

import javax.net.datagram.*;
import java.io.*;
import java.util.*;

/** 
 * Class used to handle for incoming datagrams
 * @author Symbian Devnet
 */
class Receiver
{
	/** Maximum length of an incoming message */
		private static final int LENGTH = 160; 
	/** Datagram service used for receiving messages from */
		private DatagramService dgService;
	/** Vector of DatagramListener objects to sent DatagramEvents to when datagrams received */
		private Vector listeners = new Vector();
	/** Address of receiver */
		private Address sAddress;
	/** Buffer used for incoming datagrams */
		private byte[] buffer;
	/**
	 * Constructor
	 * @param a Address of receiver
	 */
	Receiver(DatagramService dgs, Address a)
	{
		dgService = dgs;
		sAddress = a;
	}
	
	/**
	 * Called to launch receive thread in order to handle incoming datagrams
	 */	
	public void listen()
	{
		// Requires new thread to receive datagrams to ensure no other threads are blocked
		Thread receiveThread = new Thread()
		{
			public void run()
			{							
				while(true)
				{				
					try
					{
						buffer = new byte[LENGTH];	
						char zero = ' ';

						Datagram dg = new Datagram(buffer); // Set up receiving datagram

						for (int i = 0; i < LENGTH; i++)
							buffer[i] = (byte)zero;					
						dgService.receive(dg);
					}  
					catch(Exception ex)
					{	
						System.out.println("Receiver terminated. Exception: " + ex.getMessage());
						System.exit(0);
					}	
					DatagramEvent dge = new DatagramEvent(this, buffer);								
					processDatagram(dge);
				}
			}		
		};
		receiveThread.start();
	}
	
	/**
	 * Close the receiver
	 */		
	public void close()
	{
		try
		{
			dgService.close();
		}
		catch(IOException ioe)
		{
			System.out.println("Could not close DatagramService:" + ioe.getMessage());
			System.exit(0);
		}
	}
	
	/**
	 * Process a new datagram by notifying all listeners
	 * @param notification Event to be sent to all listeners
	 */			
	private void processDatagram(DatagramEvent notification)
	{
		for (Enumeration en = listeners.elements(); en.hasMoreElements();)
		{
			DatagramListener listener = (DatagramListener)en.nextElement();
			listener.DatagramReceived(notification);
		}
	}
	
	/**
	 * Call to register interest in incoming datagrams
	 * @param listener Implementation of the DatagramListener interface to be called when
	 *                 a new datagram is received
	 */		
	public void addDatagramListener(DatagramListener listener)
	{
		listeners.addElement(listener);
	}
	
	/**
	 * Call to deregister interest in incoming datagrams
	 * @param listener Implementation of the DatagramListener interface previously supplied
	 *                 as an argument to addDatagramListener
	 */			
	public void removeDatagramListener(DatagramListener listener)
	{
		listeners.removeElement(listener);
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -