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

📄 receivingthread.java

📁 本系统实现在几台计算机屏幕上连贯地显示一条鱼游动大动画.
💻 JAVA
字号:
//ReceivingThread是一个线程,它负责监听特定客户端的消息并且把消息发到一个MessageListener.
package fish.server;

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

import fish.*;

public class ReceivingThread extends Thread {
	private BufferedReader input;
	private MessageListener messageListener;
	private boolean keepListening = true;

	public ReceivingThread(MessageListener listener,Socket socket) {
		super("ReceivingThread: " + socket);
		//设置消息应该被发到的listener 
		messageListener = listener;
   
		try {         
			//设置Timeout
			socket.setSoTimeout( 5000 );
			input = new BufferedReader( 
					new InputStreamReader(socket.getInputStream()));
			}
		catch (IOException ex) {
			ex.printStackTrace();
			}
		} 
	// 监听新消息并且把他们发送到MessageListener
	public void run() 
	{    
		String message;
		while ( keepListening ) {   
			try {            
				message = input.readLine();
				System.out.println(message);
				}
			//如果过了规定时间则处理如下异常
			catch ( InterruptedIOException ex ) {
				//继续下一次的监听
				continue;
				}
			//如果读失败则处理如下异常
			catch ( IOException ex ) {
				//退出循环
				ex.printStackTrace();            
				break;
				}
			if (message != null) {
				StringTokenizer tokenizer = new StringTokenizer( 
						message, FishConstants.MESSAGE_SEPARATOR );             
				if (tokenizer.countTokens() == 2) {
					//把消息发送到MessageListener
					messageListener.messageReceived(tokenizer.nextToken(),   //客户端ID
							tokenizer.nextToken() ); //消息
					}
				else
					if ( message.equalsIgnoreCase( 
							FishConstants.MESSAGE_SEPARATOR +
							FishConstants.DISCONNECT_STRING ) ) 
						stopListening();
				} 
			} 
		try {         
			input.close();      
			}
		catch ( IOException ioException ) {
			ioException.printStackTrace();     
			}       
		} 

	public void stopListening() {
		keepListening = false;
		}
	
}

⌨️ 快捷键说明

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