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

📄 packetreceivingthread.java

📁 该源代码是用JAVA开发的基于远程控制的多屏动画演示系统的实现代码,包括网络功能和动画显示功能两大模块,很有实际应用价值的了
💻 JAVA
字号:
//PacketReceivingThread负责监听从FishServer发过来的包含消息的DatagramPackets
//,并将符合要求的消息送到指定的MessageListener。
package fish.client;

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

import fish.*;

public class PacketReceivingThread extends Thread {


	private MessageListener messageListener;
	private MulticastSocket multicastSocket;
	private InetAddress multicastGroup;
	private boolean keepListening = true;

	public PacketReceivingThread(MessageListener listener) 
	{
		super( "PacketReceivingThread" );
		messageListener = listener;
   
		try {
			multicastSocket = new MulticastSocket( 
					FishConstants.MULTICAST_LISTENING_PORT );
			multicastGroup = InetAddress.getByName( 
					FishConstants.MULTICAST_ADDRESS );
			multicastSocket.joinGroup( multicastGroup ); 
			multicastSocket.setSoTimeout( 5000 );
			}
   
		catch ( IOException ioException ) {
			ioException.printStackTrace();
		}
   } 

	public void run() 
	{          
		//监听消息直到停止
		while ( keepListening ) {

			byte[] buffer = 
				new byte[ FishConstants.MESSAGE_SIZE ];

			DatagramPacket packet = new DatagramPacket( buffer, 
					FishConstants.MESSAGE_SIZE );

			try {            
				multicastSocket.receive( packet );
			}

			catch ( InterruptedIOException interruptedIOException ) {
         
				continue;
			}
      
			catch ( IOException ioException ) {
				ioException.printStackTrace();
				break;
			}

			String message = new String( packet.getData() );

			message = message.trim();
			StringTokenizer tokenizer = new StringTokenizer( 
					message, FishConstants.MESSAGE_SEPARATOR );

			if ( tokenizer.countTokens() == 2 ) 

				//把消息送给MessageListener
				messageListener.messageReceived( 
						tokenizer.nextToken(),   //FishID
						tokenizer.nextToken() ); //消息

		}

		try {
			multicastSocket.leaveGroup( multicastGroup );
			multicastSocket.close(); 
			}
   
		catch ( IOException ioException ) { 
			ioException.printStackTrace();
		}
   } 

	public void stopListening() 
	{
		keepListening = false;
		}

}

⌨️ 快捷键说明

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