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

📄 clientlisten.java

📁 DSS数字签名
💻 JAVA
字号:
//用来实现接受从客户端发来的数据流 监听用户发来的信息 并执行相关的方法
package dssclient;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.StringTokenizer;

public class ClientListen extends Thread{
	ListUser tkparent;
	String name;
	Socket socket;
	BufferedInputStream in;                                 //用来实现接受从客户端发来的数据流
	PrintStream out;                   
	byte[] data = new byte[512];
	static String ENC = "GB2312";

	public ClientListen(ListUser p,Socket s){   //接收数据和发送数据的流
		//接受参数
		tkparent=p;
		socket=s;
		try{//实例化两个数据流
			out=new PrintStream(s.getOutputStream());        //发送数据
			in=new BufferedInputStream(s.getInputStream());  //接收数据
		}
		catch(IOException e){
			System.out.println("错误:"+e);
			tkparent.disconnect();
		}
	} 
  
	public void run(){
		String msg = null;
		while(true){
			try{
				in.read(data);
				msg = new String(data,ENC);
			}
			catch(IOException e){
				System.out.println("错误:"+e);
				tkparent.disconnect();
			}
			if (msg == null){                           //如果从服务器传来的信息为空则断开此次连接          
				try{
					tkparent.sk.close();
				}
				catch(IOException e){
				}
				return;
			}
			StringTokenizer st=new StringTokenizer(msg,":");   //用StringTokenizer类来实现读取分段字符
			String keyword=st.nextToken();                     //读取信息头即关键字用来识别是何种信息
			if(keyword.equals("EXIST"))
			{
				int size=Integer.parseInt(st.nextToken());
				for(int i=0;i<size;i++){
					tkparent.adduser(st.nextToken());
				}
			}
			
			else if(keyword.equals("MSG")){                  //如果关键字是MSG则是服务器传来的聊天信息
		//		parent.msghandle(st.nextToken("\0"));                
			}
	
			else if(keyword.equals("NEW")){
				tkparent.adduser(st.nextToken());	        
			}
			
			
			else if(keyword.equals("BULK")){
				tkparent.batchandle(st.nextToken("\0"));   			
			}
			else if(keyword.equals("QUIT")){
				tkparent.removeuser(st.nextToken());
			}		
			else if(keyword.equals("ERROR")){
			}		
			else if(keyword.equals("FILE_TO")){
				tkparent.FileTobox(st.nextToken("\0"));			
			}
			else if(keyword.equals("FILE_FROM")){
				tkparent.FileFrombox(st.nextToken("\0"));
			}	
			
		}
	}    
	
	void send(String msg){
		out.print(msg);
		out.flush();
	}
}      


⌨️ 快捷键说明

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