如何用java写一个程序,实现服务端和客户端连接,并用多线程实现聊天室功能
时间: 2024-03-04 17:48:07 浏览: 82
使用javaGUI多线程网络编程技术实现的聊天室程序
5星 · 资源好评率100%
要实现服务端和客户端的连接,可以使用 Java 中的 Socket 类。以下是一个简单的示例代码:
```java
// 服务端代码
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8888);
while (true) {
Socket clientSocket = serverSocket.accept();
Thread thread = new Thread(new ServerThread(clientSocket));
thread.start();
}
}
}
// 客户端代码
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8888);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
String message = in.readLine();
System.out.println("收到服务端消息:" + message);
out.println("客户端收到消息了:" + message);
}
}
}
```
上面的代码中,服务端监听 8888 端口,当有客户端连接时,就启动一个新的线程处理该客户端的消息。客户端连接时,会向服务端发送消息,服务端收到消息后,会把消息转发给所有连接的客户端。
以下是服务端线程的代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ServerThread implements Runnable {
private Socket clientSocket;
public ServerThread(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
while (true) {
String message = in.readLine();
System.out.println("收到客户端消息:" + message);
out.println("服务端收到消息了:" + message);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在服务端线程中,我们通过输入输出流来和客户端通信,收到消息后,转发给所有客户端。
阅读全文