Java实现下文交流
时间: 2025-01-10 15:33:24 浏览: 15
### Java 实现文本聊天功能
#### 使用TCP协议的简单客户端-服务器架构
为了实现基本的文本聊天功能,可以通过Java中的`Socket`和`ServerSocket`类来构建一个简单的客户端-服务器架构。这种设计允许多个客户端连接到同一个服务器并相互发送消息。
```java
// Server端代码示例
import java.io.*;
import java.net.*;
public class ChatServer {
public static void main(String[] args) throws IOException {
int port = 8080;
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("服务器已启动");
while (true) {
try (
Socket socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true)
) {
String inputLine;
while ((inputLine = in.readLine()) != null) {
if ("Bye".equalsIgnoreCase(inputLine)) break;
System.out.println("收到:" + inputLine);
out.println("Echo: " + inputLine); // 将接收到的消息回显给客户端
}
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
}
}
```
上述服务端程序会监听指定端口上的连接请求,并为每一个新建立的连接创建一个新的输入输出流用于读取消息并向客户端回复相同的内容[^1]。
对于客户端部分,则需要编写能够发起连接并与之对话的应用:
```java
// Client端代码示例
import java.io.*;
import java.net.*;
public class ChatClient {
private final static String SERVER_IP = "localhost";
private final static int PORT = 8080;
public static void main(String[] args) throws UnknownHostException, IOException {
try (
Socket socket = new Socket(SERVER_IP, PORT);
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()))
) {
String userInput;
while ((userInput = stdIn.readLine()) != null) {
writer.write(userInput);
writer.newLine(); // 发送换行符作为消息结束标志
writer.flush();
if ("bye".equalsIgnoreCase(userInput.trim())) break; // 输入'bye'退出循环
// 接收来自服务器的信息
BufferedReader reader = new BufferedReader(
new InputStreamReader(socket.getInputStream())
);
System.out.println(reader.readLine());
}
}
}
}
```
这段客户端代码实现了向服务器发送用户输入的功能,并能显示从服务器返回的数据。当用户键入特定命令(如“bye”)时,它将终止与服务器之间的通信链接。
通过这种方式,可以建立起基础版本的文字聊天工具,在此基础上还可以进一步扩展更多特性,比如支持多人在线聊天、增加图形界面等。
阅读全文
相关推荐


















