java实现基于TCP的C/S通信,客户端和服务器之间可以在自己的界面上直接与对方进行聊天。
时间: 2024-05-03 15:21:17 浏览: 21
以下是一个基于TCP的客户端-服务器聊天程序的示例代码:
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(12345);
System.out.println("Server started.");
Socket clientSocket = serverSocket.accept();
System.out.println("Client connected.");
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println("Client: " + inputLine);
out.println("Server: " + inputLine);
if (inputLine.equals("bye")) {
break;
}
}
in.close();
out.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
客户端代码:
```java
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 12345);
System.out.println("Connected to server.");
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
Scanner scanner = new Scanner(System.in);
String inputLine;
while (true) {
System.out.print("Client: ");
inputLine = scanner.nextLine();
out.println(inputLine);
if (inputLine.equals("bye")) {
break;
}
String response = in.readLine();
System.out.println(response);
}
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个程序使用了Java的Socket类来建立TCP连接。服务器先启动并等待客户端连接,客户端连接之后就可以开始聊天。客户端和服务器都使用了BufferedReader和PrintWriter来进行数据的读写。在客户端输入一行文本后,发送给服务器,服务器收到后将其打印到控制台上,并将其回传给客户端,客户端收到后打印到自己的控制台上。
此示例只支持一对一聊天,如果需要实现多人聊天,可以使用多线程来处理不同的客户端连接。