创建服务器端
使用`ServerSocket`类创建服务器实例,绑定到特定端口。
当客户端连接时,接受连接请求并创建一个新的线程来处理客户端通信。
创建客户端
提示用户输入服务器地址和端口。
使用`Socket`类创建客户端实例,连接到服务器。
创建输入流和输出流,用于接收和发送消息。
实现通信逻辑
在服务器端,为每个连接的客户端创建一个新的线程。
在客户端线程中,使用循环不断读取用户输入的消息,并通过输出流将消息发送到服务器。
在服务器端,接收来自客户端的消息,并将其广播给所有连接的客户端。
添加用户界面 (可选):
可以使用Java的Swing或JavaFX等库来创建一个用户界面,以便用户可以方便地输入和查看聊天消息。
测试和调试
测试你的聊天室应用程序,并进行必要的调试。
```java
import java.io.*;
import java.net.*;
public class ChatServer {
private int port;
private ServerSocket serverSocket;
private Socket socket;
public ChatServer(int port) throws IOException {
this.port = port;
serverSocket = new ServerSocket(port);
}
public void start() throws IOException {
System.out.println("服务器启动,等待客户端连接...");
socket = serverSocket.accept();
System.out.println("客户端已连接:" + socket.getInetAddress());
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
String message;
while ((message = in.readLine()) != null) {
System.out.println("来自客户端的消息:" + message);
out.println("服务器已收到:" + message);
// 广播消息给所有客户端
broadcastMessage(message);
}
socket.close();
serverSocket.close();
}
private void broadcastMessage(String message) {
// 实现广播逻辑
}
public static void main(String[] args) {
try {
ChatServer server = new ChatServer(12345);
server.start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
请注意,上述代码仅为服务器端的基本实现,实际应用中需要考虑更多细节,如错误处理、多线程管理、用户认证等。此外,为了实现实时通信,可以考虑使用WebSocket API。