📄 chatthread.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 + -