java实现基于TCP的C/S通信,客户端和服务器之间可以在自己的界面上直接与对方进行聊天。
时间: 2024-05-13 16:20:52 浏览: 6
客户端代码:
```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client {
public static void main(String[] args) {
try {
//1.创建Socket对象,指定服务器的IP地址和端口号
Socket socket = new Socket("localhost", 8888);
//2.获取输入输出流
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//3.循环读取用户输入,向服务器发送消息,并接收服务器返回的消息
String input;
while ((input = br.readLine()) != null) {
pw.println(input);
String response = in.readLine();
System.out.println("Server response: " + response);
}
//4.关闭资源
br.close();
pw.close();
in.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
服务器代码:
```
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 Server {
public static void main(String[] args) {
try {
//1.创建ServerSocket对象,指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started...");
//2.等待客户端连接,获取Socket对象
Socket socket = serverSocket.accept();
System.out.println("Client connected...");
//3.获取输入输出流
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
//4.循环接收客户端消息,并发送响应
String input;
while ((input = in.readLine()) != null) {
System.out.println("Client message: " + input);
pw.println("Server response: " + input);
}
//5.关闭资源
in.close();
pw.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
运行以上代码,客户端和服务器之间可以在自己的界面上直接与对方进行聊天。