用Java 编写一个测试应用程序,服务器为聊天服务器(ip:192.168.1.1,端口:8888),等待来自多个客户端的连接请求,通信应通过多个线程使用TCP协议实现到处理连接。
时间: 2024-03-25 10:35:40 浏览: 26
好的,下面是一个基本的Java聊天服务器应用程序的代码,可以根据您的需要进行修改:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(8888);
System.out.println("Chat server started on port 8888.");
while(true) {
Socket client = server.accept();
System.out.println("New client connected from " + client.getInetAddress().getHostAddress());
Thread thread = new Thread(new ClientHandler(client));
thread.start();
}
} catch(Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
class ClientHandler implements Runnable {
private Socket client;
private BufferedReader in;
private PrintWriter out;
public ClientHandler(Socket socket) {
client = socket;
}
public void run() {
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
String username = in.readLine();
System.out.println(username + " has joined the chat.");
while(true) {
String message = in.readLine();
if(message == null) break;
System.out.println(username + ": " + message);
// Send the message to all clients
for(ClientHandler handler : ChatServer.clients) {
handler.out.println(username + ": " + message);
}
}
System.out.println(username + " has left the chat.");
ChatServer.clients.remove(this);
client.close();
} catch(Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
```
在这个代码中,我们创建了一个ServerSocket对象来监听来自客户端的连接请求。当有新的连接请求时,我们使用accept()方法接受连接,并创建一个新的线程来处理客户端。这个线程被称为ClientHandler,它负责接收来自客户端的消息,并向所有客户端广播这些消息。
当客户端连接时,它会发送用户名给服务器。服务器会将该用户名添加到一个客户端列表中,并向所有客户端广播该用户已连接的消息。当客户端发送消息时,服务器将该消息发送给所有其他客户端。当客户端关闭连接时,服务器将从客户端列表中删除该客户端,并向所有客户端广播该用户已离开的消息。
注意:这只是一个基本的示例代码,不包括异常处理、安全性和性能优化等方面的考虑。在实际应用中,您需要根据实际需求进行修改和完善。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)