java简单局域网聊天程序的设计与实现
时间: 2023-08-14 11:06:14 浏览: 143
一个简单的Java局域网聊天程序可以通过Socket编程实现。这里提供一个基本的设计与实现步骤:
1. 设计
首先,需要设计聊天程序的通信协议。在本例中,假设聊天程序的通信协议为简单的字符串。客户端和服务器之间发送的消息都是字符串,服务器只是将收到的消息转发给所有客户端。在这种情况下,可以设计一个简单的协议:
- 客户端发送消息时,将消息文本放在字符串中,并在字符串前面加上“MSG”标记。
- 服务器接收到消息时,将标记去掉,并将消息转发给所有客户端。
2. 实现
下面是一个简单的Java局域网聊天程序的实现步骤:
- 编写服务器端代码
服务器端需要监听一个端口,等待客户端的连接请求。当有客户端连接时,服务器应该将客户端的Socket对象保存起来,以便将来向客户端发送消息。在收到客户端的消息后,服务器应该将消息转发给所有客户端。
```
import java.io.*;
import java.net.*;
public class Server {
private static final int PORT = 12345;
private static ServerSocket serverSocket;
public static void main(String[] args) throws IOException {
serverSocket = new ServerSocket(PORT);
while (true) {
Socket socket = serverSocket.accept();
new Thread(new ClientHandler(socket)).start();
}
}
private static class ClientHandler implements Runnable {
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public ClientHandler(Socket socket) {
this.socket = socket;
}
public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
String line = in.readLine();
if (line.startsWith("MSG")) {
String message = line.substring(3);
broadcast(message);
}
}
} catch (IOException e) {
// 处理异常
}
}
private void broadcast(String message) {
// 遍历所有客户端的Socket,发送消息
}
}
}
```
- 编写客户端代码
客户端需要连接服务器,并向服务器发送消息。在收到服务器转发的消息后,客户端应该将消息显示出来。
```
import java.io.*;
import java.net.*;
public class Client {
private static final String SERVER_ADDRESS = "localhost";
private static final int SERVER_PORT = 12345;
private static Socket socket;
private static BufferedReader in;
private static PrintWriter out;
public static void main(String[] args) throws IOException {
socket = new Socket(SERVER_ADDRESS, SERVER_PORT);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
new Thread(new ServerHandler()).start();
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String message = keyboard.readLine();
out.println("MSG" + message);
}
}
private static class ServerHandler implements Runnable {
public void run() {
try {
while (true) {
String message = in.readLine();
System.out.println(message);
}
} catch (IOException e) {
// 处理异常
}
}
}
}
```
以上是一个简单的Java局域网聊天程序的设计与实现。需要注意的是,这个程序只是一个基本的示例,还需要进行优化和改进,以适应实际应用场景。
阅读全文