生成一份关于聊天室的java代码
时间: 2024-03-21 14:38:00 浏览: 13
以下是一个简单的聊天室的Java代码,它使用ServerSocket和Socket类实现:
Server端代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class ChatServer {
private static ArrayList<PrintWriter> clients = new ArrayList<PrintWriter>();
public static void main(String[] args) throws Exception {
System.out.println("The chat server is running.");
ServerSocket listener = new ServerSocket(9090);
try {
while (true) {
new Handler(listener.accept()).start();
}
} finally {
listener.close();
}
}
private static class Handler extends Thread {
private String name;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Handler(Socket socket) {
this.socket = socket;
}
public void run() {
try {
in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
out.println("Enter your name:");
name = in.readLine();
clients.add(out);
while (true) {
String input = in.readLine();
if (input == null) {
return;
}
for (PrintWriter writer : clients) {
writer.println(name + ": " + input);
}
}
} catch (IOException e) {
System.out.println(e);
} finally {
if (name != null) {
clients.remove(out);
}
try {
socket.close();
} catch (IOException e) {
}
}
}
}
}
```
Client端代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ChatClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 9090);
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
String name = "";
while (true) {
String line = in.readLine();
if (line.startsWith("Enter your name:")) {
System.out.println(line);
name = input.readLine();
out.println(name);
} else if (line.startsWith(name + ": ")) {
System.out.println(line);
}
}
}
}
```
这是一个非常简单的聊天室示例,它只能支持基本的文本聊天。在实际应用中,还需要考虑许多其他因素,例如用户权限、消息传输的安全性等。