用JAVA编写利用多线程、网络编程设计一个聊天程序。要求通过监听指定的端口号、目标IP地址和目标端口号,实现消息的发送和接收功能,并把聊天内容显示出来。
时间: 2024-02-03 18:15:21 浏览: 119
好的,以下是一个简单的聊天程序的JAVA代码:
```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;
public class ChatServer {
private ServerSocket serverSocket;
private Socket clientSocket;
private PrintWriter out;
private BufferedReader in;
public void start(int port) throws IOException {
serverSocket = new ServerSocket(port); // 创建一个ServerSocket并监听指定端口号
clientSocket = serverSocket.accept(); // 监听并接受客户端的连接
out = new PrintWriter(clientSocket.getOutputStream(), true); // 获取客户端的输出流
in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 获取客户端的输入流
String message;
while ((message = in.readLine()) != null) { // 循环读取客户端的消息
System.out.println("客户端: " + message); // 输出客户端发送的消息
out.println("服务器收到消息: " + message); // 回应客户端的消息
}
}
public void stop() throws IOException {
in.close();
out.close();
clientSocket.close();
serverSocket.close();
}
public static void main(String[] args) throws IOException {
ChatServer server = new ChatServer();
server.start(6666);
}
}
```
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ChatClient {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
public void start(String ip, int port) throws IOException {
socket = new Socket(ip, port); // 创建一个Socket并连接到指定的IP地址和端口号
out = new PrintWriter(socket.getOutputStream(), true); // 获取输出流
in = new BufferedReader(new InputStreamReader(socket.getInputStream())); // 获取输入流
BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); // 获取控制台输入流
String message;
while ((message = console.readLine()) != null) { // 循环读取控制台输入的消息
out.println(message); // 发送消息给服务器
System.out.println("服务器: " + in.readLine()); // 接收服务器的回应并输出到控制台
}
}
public void stop() throws IOException {
in.close();
out.close();
socket.close();
}
public static void main(String[] args) throws IOException {
ChatClient client = new ChatClient();
client.start("127.0.0.1", 6666); // 连接到本地服务器
}
}
```
以上是一个基于TCP协议的聊天程序,可以在本地测试。可以通过在不同的终端中运行 ChatServer 和 ChatClient 来模拟两个用户之间的聊天。
阅读全文