用Java实现基于TCP协议的简单聊天程序
发布时间:2023-06-09 12:07:44
Java可以通过Socket和ServerSocket实现基于TCP协议的简单聊天程序。下面将介绍实现步骤和代码示例。
1. 创建服务端程序
使用ServerSocket创建一个服务端程序,表示服务器端开启一个监听端口等待客户端连接。
package com.chat;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ChatServer {
public static void main(String[] args) throws Exception {
// 创建ServerSocket,监听端口为8888
ServerSocket serverSocket = new ServerSocket(8888);
// 等待客户端连接
System.out.println("等待客户端连接...");
Socket socket = serverSocket.accept();
System.out.println("客户端连接成功!");
// 获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 循环发送消息
String line = "";
while (!"exit".equalsIgnoreCase(line)) {
line = in.readLine();
System.out.println("收到客户端消息:" + line);
// 回复客户端消息
out.println("服务端回复:" + line);
}
// 关闭资源
in.close();
out.close();
socket.close();
serverSocket.close();
}
}
2. 创建客户端程序
使用Socket创建一个客户端程序,表示客户端连接服务端并发送消息。
package com.chat;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ChatClient {
public static void main(String[] args) throws Exception {
// 创建Socket,连接服务端
Socket socket = new Socket("localhost", 8888);
// 获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
// 循环发送消息
Scanner scanner = new Scanner(System.in);
String line = "";
while (!"exit".equalsIgnoreCase(line)) {
line = scanner.nextLine();
out.println(line);
// 接收服务端消息
String reply = in.readLine();
System.out.println("收到服务端消息:" + reply);
}
// 关闭资源
in.close();
out.close();
socket.close();
}
}
3. 运行测试
启动服务器端程序,等待客户端连接。启动客户端程序,连接到服务器端并发送消息。服务器端接收到消息后,回复客户端消息。客户端接收到回复消息后,再次发送消息。重复以上步骤即可进行简单的聊天。
总结:
Java通过Socket和ServerSocket可以实现基于TCP协议的简单聊天程序。需要注意的是,该实现只支持单个客户端和单个服务端的聊天。如果需要支持多个客户端的聊天,需要使用多线程技术。
