📄 exitthread.java
字号:
package com.project.chat.server;
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.util.*;
import com.project.util.CharacterUtil;
public class ExitThread extends Thread
{
private JFrame frame;
private ServerSocket serverSocket;
public ExitThread(JFrame frame)
{
this.frame = frame;
try
{
serverSocket = new ServerSocket(CharacterUtil.PORT);
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
public void run()
{
while(true)
{
try
{
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
byte[] buf = new byte[1024];
int length = inputStream.read(buf);
String username = new String(buf,0,length);
Server server = (Server)frame;
Map map = server.getMap();
map.remove(username);
server.setUsersList();
/**
* 以下代码为通知所有客户端更新用户列表,其实应该进行重构了,因为两处用到同样的代码
*/
Set set = map.keySet();
Iterator iterator = set.iterator();
StringBuffer sb = new StringBuffer();
while(iterator.hasNext())
{
String name = (String)iterator.next();
sb.append(name + "\n");
}
String usersList = sb.toString(); //得到用户列表
Set set2 = map.entrySet();
Iterator iterator2 = set2.iterator();
while(iterator2.hasNext()) //将新的用户列表发到每个客户端
{
Map.Entry me = (Map.Entry)iterator2.next();
String temp = (String)me.getValue();
int index_ = temp.indexOf("_");
int lastIndex_ = temp.lastIndexOf("_");
int port = Integer.parseInt(temp.substring(index_ + 1,lastIndex_));
String address = temp.substring(lastIndex_ + 1);
InetAddress clientAddress = InetAddress.getByName(address);
Socket s = new Socket(clientAddress,port);
OutputStream os = s.getOutputStream();
os.write(usersList.getBytes());
os.close();
s.close();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -