Java生成客户端和服务端的聊天室
时间: 2023-11-02 15:06:22 浏览: 42
您可以使用Java的Socket和ServerSocket类来实现一个简单的客户端和服务器端聊天室。以下是一个简单的示例,向您展示了如何实现一个简单的聊天室应用程序。
服务端:
```
import java.io.*;
import java.net.*;
public class ChatroomServer {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(5000);
} catch (IOException e) {
System.err.println("Could not listen on port: 5000.");
System.exit(1);
}
Socket clientSocket = null;
try {
System.out.println("Waiting for connection...");
clientSocket = serverSocket.accept();
System.out.println("Connection established with: " + clientSocket.getInetAddress().getHostName());
} catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Client: " + inputLine);
outputLine = "Server: " + inputLine;
out.println(outputLine);
if (outputLine.equals("bye")) {
break;
}
}
out.close();
in.close();
clientSocket.close();
serverSocket.close();
}
}
```
客户端:
```
import java.io.*;
import java.net.*;
public class ChatroomClient {
public static void main(String[] args) throws IOException {
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
try {
socket = new Socket("localhost", 5000);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: localhost.");
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for the connection to: localhost.");
System.exit(1);
}
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
out.println(userInput);
System.out.println("Server: " + in.readLine());
if (userInput.equals("bye")) {
break;
}
}
out.close();
in.close();
stdIn.close();
socket.close();
}
}
```
在这个示例中,服务端监听端口5000,并等待客户端连接。一旦客户端连接,服务器将创建一个输入流和输出流,以便读取客户端发送的消息和向客户端发送消息。客户端连接到localhost的5000端口,并使用输入和输出流与服务器通信。
当客户端输入一行文本时,客户端将向服务器发送该行文本。服务器将读取行,并将其输出到控制台。然后,服务器将构造一个响应消息,并将其发送回客户端。客户端将读取响应消息,并将其输出到控制台。如果客户端发送“bye”消息,则客户端和服务器都将关闭连接。
要启动聊天室应用程序,请先启动服务器,然后启动一个或多个客户端,以便它们可以连接到服务器并进行通信。请注意,此示例代码并不是完整的聊天室应用程序,您可以根据需要添加更多的功能和安全性措施。