java实现基于TCP的C/S通信
时间: 2023-11-14 19:05:47 浏览: 73
Java实现基于TCP的C/S通信需要使用Socket类和ServerSocket类。
客户端:
1. 创建Socket对象,指定服务器IP地址和端口号。
2. 通过Socket对象获取输出流和输入流。
3. 发送数据:通过输出流将数据发送给服务器。
4. 接收数据:通过输入流接收服务器返回的数据。
5. 关闭Socket和流。
示例代码:
```java
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] args) {
try {
// 创建Socket对象,指定服务器IP地址和端口号
Socket socket = new Socket("127.0.0.1", 8888);
// 获取输出流和输入流
OutputStream os = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(os);
InputStream is = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
// 发送数据
printWriter.write("Hello Server!");
printWriter.flush();
// 接收数据
String response = bufferedReader.readLine();
System.out.println("Server response: " + response);
// 关闭Socket和流
printWriter.close();
os.close();
bufferedReader.close();
is.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
服务器端:
1. 创建ServerSocket对象,指定端口号。
2. 通过ServerSocket对象监听客户端请求,获取Socket对象。
3. 通过Socket对象获取输出流和输入流。
4. 接收数据:通过输入流接收客户端发送的数据。
5. 发送数据:通过输出流将数据发送给客户端。
6. 关闭Socket和流。
示例代码:
```java
import java.io.*;
import java.net.*;
public class Server {
public static void main(String[] args) {
try {
// 创建ServerSocket对象,指定端口号
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("Server started...");
// 监听客户端请求,获取Socket对象
Socket socket = serverSocket.accept();
System.out.println("Client connected: " + socket.getInetAddress());
// 获取输出流和输入流
OutputStream os = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(os);
InputStream is = socket.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));
// 接收数据
String request = bufferedReader.readLine();
System.out.println("Client request: " + request);
// 发送数据
printWriter.write("Hello Client!");
printWriter.flush();
// 关闭Socket和流
printWriter.close();
os.close();
bufferedReader.close();
is.close();
socket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```