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

📄 chatthread.java

📁 java通信
💻 JAVA
字号:
package server;

import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.Iterator;
public class ChatThread extends Thread {
	
private Socket socket;
private String str;
private Server cs;
private int Msg;
private ObjectOutputStream output;
private ObjectInputStream input;

ChatThread(Socket socket,Server cs)
{
	this.socket=socket;
	str=null;
	this.cs=cs;
	Msg=0;
}
public boolean equals(ChatThread ct)
{
	if(ct.socket.equals(socket))
		return true;
	return false;
}

public void comeMsg()
{
	cs.displayArea.append(str+"xiao xi");
	Msg++;
	this.notify();
}
public void run()
{
	/*
	new Thread()
	{
		public void run()
		{
	try{
		byte[] buf=new byte[100000];
		String msg="";
		int count;
		output = new ObjectOutputStream(socket.getOutputStream());
		input=new ObjectInputStream(socket.getInputStream());
		//OutputStream out=socket.getOutputStream();
		//InputStream in=socket.getInputStream();
		while(true)
		{
			//input.readFully(buf);
			//count=buf.length;
			msg=( String ) input.readObject();
			if(socket.isClosed()||(!socket.isConnected())) break;
			if(msg!=null)
			{
				msg = "SERVER>>> Connection successful";
				cs.enterField.setEnabled( true );
				//msg=new String(buf,0,count);
				msg=( String ) input.readObject();
				cs.displayArea.append("::::"+msg+"\n");
				Msg++;
				 cs.displayArea.setCaretPosition(cs.displayArea.getText().length());
				 output.writeObject( "nihao!!!" );
		         output.flush();
				if(msg.startsWith("<user>"))
				{
					String[] user=msg.split("<user>");
					str=user[1];
					if(cs.addUser(str, ChatThread.this))
					{
						cs.displayArea.append("新用户"+str);
						cs.addMessge(new Message("新用户:"+cs.getUsers(),""));
						cs.notifyMsgcome();
						cs.addMessge(new Message("当前用户:"+cs.getUsers(),""));
						cs.notifyMsgcome();
					}
					else
					{
						output.writeObject("nihao");
						output.flush();
					    cs.displayArea.append( "\nCLIENT>>>" );
						socket.close();
						break;
					}
				}
				else
				{
					String[] msgs=msg.split("<>");
					for(int i=0;i<msgs.length;i++)
					{
						cs.addMessge(new Message(str+"::"+msgs[i],str));
						cs.notifyMsgcome();
					}
				}
			}
		}
		
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}
	finally
	{
		try{
			cs.delUser(str, ChatThread.this);
			socket.close();
			cs.addMessge(new Message("用户退出:"+"kkkkk",""));
			cs.notifyMsgcome();
			cs.addMessge(new Message(("当前用户:"+cs.getUsers()),""));
			cs.notifyMsgcome();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
		}
	}.start();
	*/
	try{
		byte[] buf=new byte[100000];
		String msg=new String();
		int count;
		output = new ObjectOutputStream(socket.getOutputStream());
		input=new ObjectInputStream(socket.getInputStream());
		//OutputStream out=socket.getOutputStream();
		//InputStream in=socket.getInputStream();
		while(true)
		{
			//input.readFully(buf);
			//count=buf.length;
			msg=( String ) input.readObject();
			if(socket.isClosed()||(!socket.isConnected())) break;
			if(msg!=null)
			{
				msg = "SERVER>>> Connection successful";
				cs.enterField.setEnabled( true );
				//msg=new String(buf,0,count);
				msg=( String ) input.readObject();
				cs.displayArea.append("::::"+msg+"\n");
				Msg++;
				 cs.displayArea.setCaretPosition(cs.displayArea.getText().length());
				 output.writeObject( "nihao!!!" );
		         output.flush();
				if(msg.startsWith("<user>"))
				{
					String[] user=msg.split("<user>");
					str=user[1];
					if(cs.addUser(str, ChatThread.this))
					{
						cs.displayArea.append("新用户"+str);
						cs.addMessge(new Message("新用户:"+cs.getUsers(),""));
						cs.notifyMsgcome();
						cs.addMessge(new Message("当前用户:"+cs.getUsers(),""));
						cs.notifyMsgcome();
					}
					else
					{
						output.writeObject("nihao");
						output.flush();
					    cs.displayArea.append( "\nCLIENT>>>" );
						socket.close();
						break;
					}
				}
				else
				{
					String[] msgs=msg.split("<>");
					for(int i=0;i<msgs.length;i++)
					{
						cs.addMessge(new Message(str+"::"+msgs[i],str));
						cs.notifyMsgcome();
					}
				}
			}
		}
		
	}
	catch (Exception e)
	{
		e.printStackTrace();
	}
	finally
	{
		try{
			cs.delUser(str, ChatThread.this);
			socket.close();
			cs.addMessge(new Message("用户退出:"+"kkkkk",""));
			cs.notifyMsgcome();
			cs.addMessge(new Message(("当前用户:"+cs.getUsers()),""));
			cs.notifyMsgcome();
		}
		catch(Exception e)
		{
			e.printStackTrace();
		}
	}
		}
/*	
	try
	{
		String msg;
		output = new ObjectOutputStream(socket.getOutputStream());
		output.writeObject("nihao");
		output.flush();
		cs.displayArea.append(""+Msg+"!!!!!\n");
		while(Msg>0)
		{
			//if(socket.isClosed()||(!socket.isConnected()))break;
			//msg="nihao!!!";
			//synchronized(this)
			//{
				//this.wait();
				//while(Msg>0)
				//{
					//String outMsg=cs.getMessage(str);
					//if(outMsg!=null)
					//{
						//if(!outMsg.equalsIgnoreCase("<my message>"));
			output = new ObjectOutputStream(socket.getOutputStream());
						output.writeObject("nihao");
						output.flush();
						//cs.displayArea.append(str+":发送消息:"+outMsg);
						Msg--;
					//}
				//}
			//}
		}
		//processConnection();
		
	}
	catch(Exception e)
	{
		e.printStackTrace();
	}

}*/
}

⌨️ 快捷键说明

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