📄 clientthread.java
字号:
package SmallChatRoom;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import javax.swing.JTextArea;
public class ClientThread extends Thread {
Socket csocket;
PrintWriter writer;
BufferedReader reader;
ServerThread sThread;
JTextArea sstatus;
String msg;
public static int connectNumber=0;
public ClientThread(Socket csocket,ServerThread sThread){
this.csocket=csocket;
this.sThread=sThread;
this.sstatus=sThread.sframe.serverstatus;
connectNumber++;
try{
writer=new PrintWriter(csocket.getOutputStream());
reader=new BufferedReader(new InputStreamReader(csocket.getInputStream()));
}
catch(IOException e){
System.out.println("发生异常: "+e);
System.out.println("建立I/O管道失败!!");
System.exit(3);
}
msg="新朋友<"+getClientName()+">加入!!!";
msg=msg+"聊天室人数:"+connectNumber+"\n\n";
sThread.messages.addElement(msg);
}
public void run()
{
while(true)
{
try
{
String Message=reader.readLine();
synchronized(sThread.messages)
{
if(Message!=null && Message.equals("ByeBye"))
{
//if(Message.equals("ByeBye"));
//{
connectNumber--;
Message=getClientName()+":"+getClientAddress()+"已离开..";
sstatus.append(Message+" ");
sstatus.append("目前在线用户数:"+connectNumber+"\n");
sThread.messages.addElement(Message);
synchronized(sThread.clients)
{
sThread.clients.removeElement(this);
}
break;
}
else if(Message!=null && Message.equals("ByeBye")==false)
{
Message="来自"+getClientName()+":"+getClientAddress()+"\n=>"+Message+"\n";
sThread.messages.addElement(Message);
}
}
}
catch(IOException e){
break;
}
}
}
public String getClientName(){
return csocket.getInetAddress().getHostName();
}
public String getClientAddress(){
return csocket.getInetAddress().getHostAddress();
}
public void finalize()
{
try
{
reader.close();
writer.close();
csocket.close();
}
catch(IOException e){}
csocket=null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -