java socket tcp长链接
时间: 2023-10-01 08:10:26 浏览: 48
Java中的Socket类可以用来实现TCP长连接。TCP长连接是指,客户端和服务器之间建立的TCP连接不会在一次请求和响应后断开,而是保持连接状态,以便下一次请求和响应可以直接复用已经建立的连接。
以下是一个简单的Java Socket TCP长连接示例:
客户端代码:
```java
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String[] args) {
try {
Socket socket = new Socket("localhost", 8888);
System.out.println("连接成功");
// 向服务器发送消息
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("Hello, Server!");
pw.flush();
// 从服务器接收消息
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String message = br.readLine();
System.out.println("收到消息:" + message);
// 关闭连接
br.close();
is.close();
pw.close();
os.close();
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
服务器端代码:
```java
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8888);
System.out.println("服务器已启动,等待连接...");
while (true) {
Socket socket = serverSocket.accept();
System.out.println("连接成功");
// 从客户端接收消息
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String message = br.readLine();
System.out.println("收到消息:" + message);
// 向客户端发送消息
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);
pw.write("Hello, Client!");
pw.flush();
// 关闭连接
pw.close();
os.close();
br.close();
is.close();
socket.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在上述代码中,客户端和服务器端都使用Socket类来建立TCP连接。客户端向服务器发送一条消息,服务器接收并回复一条消息。客户端和服务器之间的连接并没有断开,因此它们可以继续进行通信。当不需要连接时,可以通过关闭输入输出流和Socket对象来关闭连接。