给我用java语言写一个socket多人聊天项目
时间: 2023-03-11 07:01:36 浏览: 126
我可以为你提供一个基于Java的Socket多人聊天项目的代码示例,它可以帮助你迅速开发一个小型聊天应用:import java.io.*;
import java.net.*;
import java.util.*;public class Server {
//定义保存所有Socket的ArrayList
public static ArrayList<Socket> socketList = new ArrayList<Socket>();
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(10086);
Socket s = null;
//使用死循环来不断接受来自客户端的请求
while(true) {
//每当接受到客户端Socket的请求时,服务器端也对应产生一个Socket
s = ss.accept();
//将接受到的Socket加入SocketList中
socketList.add(s);
//每当客户端连接之后,启动一条ServerThread线程为该客户端服务
new Thread(new ServerThread(s)).start();
}
}
}class ServerThread implements Runnable {
//定义当前线程所处理的Socket
Socket s = null;
//该线程所处理的Socket对应的输入流
BufferedReader br = null;
public ServerThread(Socket s) throws IOException {
this.s = s;
//初始化该Socket对应的输入流
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
}
public void run() {
String content = null;
//采用循环不断地从Socket中读取客户端发送过来的数据
while((content = readFromClient()) != null) {
//遍历socketList中的每个Socket,
//将读到的内容向每个Socket发送一次
for(Socket s : Server.socketList) {
PrintStream ps = null;
try {
ps = new PrintStream(s.getOutputStream());
ps.println(content);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
//定义读取客户端数据的方法
private String readFromClient() {
try {
return br.readLine();
} catch (IOException e) {
//如果捕捉到异常,表明该Socket对应的客户端已经关闭
Server.socketList.remove(s);
}
return null;
}
}
阅读全文