java实现socket长连接_java如何实现Socket的长连接和短连接
时间: 2024-03-17 10:46:28 浏览: 13
Java中通过Socket实现长连接和短连接的方式如下:
1. 长连接:
在客户端和服务器端建立连接之后,客户端和服务器端保持连接状态,不主动关闭连接。客户端和服务器端可以随时发送和接收数据,直到其中一方关闭连接或者网络出现问题导致连接中断。
2. 短连接:
在客户端和服务器端完成一次数据交互之后,客户端主动关闭连接。服务器端在接收完客户端的数据之后也关闭连接。当客户端需要再次发送数据的时候,需要重新建立连接。
下面是一个简单的Java代码示例,演示如何实现Socket的长连接和短连接:
1. 长连接:
```java
// 客户端代码
Socket socket = new Socket("127.0.0.1", 8888);
while (true) {
OutputStream outputStream = socket.getOutputStream();
String message = "我是客户端,发送消息给服务器端";
outputStream.write(message.getBytes());
outputStream.flush();
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String result = new String(buffer, 0, len);
System.out.println("服务器端返回的消息:" + result);
Thread.sleep(1000);
}
// 服务器端代码
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
while (true) {
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String message = new String(buffer, 0, len);
System.out.println("客户端发送的消息:" + message);
OutputStream outputStream = socket.getOutputStream();
String result = "我是服务器端,发送消息给客户端";
outputStream.write(result.getBytes());
outputStream.flush();
}
```
2. 短连接:
```java
// 客户端代码
Socket socket = new Socket("127.0.0.1", 8888);
OutputStream outputStream = socket.getOutputStream();
String message = "我是客户端,发送消息给服务器端";
outputStream.write(message.getBytes());
outputStream.flush();
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String result = new String(buffer, 0, len);
System.out.println("服务器端返回的消息:" + result);
outputStream.close();
inputStream.close();
socket.close();
// 服务器端代码
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
String message = new String(buffer, 0, len);
System.out.println("客户端发送的消息:" + message);
OutputStream outputStream = socket.getOutputStream();
String result = "我是服务器端,发送消息给客户端";
outputStream.write(result.getBytes());
outputStream.flush();
outputStream.close();
inputStream.close();
socket.close();
```