写点什么

java 如何实现 Socket 的长连接和短连接

  • 2024-12-20
    四川
  • 本文字数:1690 字

    阅读完需:约 6 分钟

java如何实现Socket的长连接和短连接

在 Java 中,Socket 编程是网络编程的基础,它可以实现客户端和服务器之间的通信。根据连接持续时间和使用方式的不同,Socket 连接可以分为长连接和短连接。


首先我们来看看如何实现短连接。在短链接中,客户端向服务器发送请求后就断开了链接。当服务器处理完请求并返回响应后也会断开链接。


以下是一个简单的 Java Socket 短链接示例:


// 客户端 import java.io.;import java.net.;


public class ShortConnectionClient {public static void main(String[] args) throws IOException {Socket socket = new Socket("localhost", 8080);PrintWriter out = new PrintWriter(socket.getOutputStream(), true);out.println("Hello Server");


    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));    String response = in.readLine();
System.out.println("Server response: " + response);
// 关闭资源out.close();in.close();socket.close(); }
复制代码


}


// 服务端 import java.io.;import java.net.;


public class ShortConnectionServer {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8080);


while (true) {     Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); String requestMessage= in.readLine();
System.out.println("Client message: " + requestMessage);
PrintWriter out = new PrintWriter(clientsocket.getOutputStream(), true); out.println("Hello Client");
// 关闭资源 clientsocket.close();}serversocket.close(); }
复制代码


}​然后我们来看看如何实现长连接。在长链接中,客户端和服务器建立连接后,会保持这个链接的开启状态,直到客户端或服务器明确要求断开连接。


以下是一个简单的 Java Socket 长链接示例:


// 客户端 import java.io.;import java.net.;


public class LongConnectionClient {public static void main(String[] args) throws IOException {Socket socket = new Socket("localhost", 8080);PrintWriter out = new PrintWriter(socket.getOutputStream(), true);


for (int i = 0; i < 5; i++) {    out.println("Hello Server " + (i + 1));    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));    String response = in.readLine();        System.out.println("Server response: " + response);}
// 关闭资源out.close();socket.close(); }
复制代码


}


//服务端 import java.io.;import java.net.;


public class LongConnectionServer {public static void main(String[] args) throws IOException{ServerSocket serverSocket=new ServerSocket(8080);


while(true){        Socket clientsocket=serverSocket.accept();
BufferedReader in=new BufferedReader(new InputStreamReader(clientsocket.getInputStream())); PrintWriter out=new PrintWriter(clientsocket.getOutputStream(),true);
String requestMessage; while ((requestMessage= in.readLine()) != null) { System.out.println("Client message: " + requestMessage); out.println("Hello Client"); }
// 关闭资源 clientsocket.close();}serversocket.close(); }
复制代码


}​在这个例子中,我们可以看到客户端和服务都没有立即关闭套接字。相反,在一个循环中发送和接收多个消息,直到完成所有的交互。


总的来说,长连接和短连接在 Java 中主要通过控制 Socket 连接的开启和关闭来实现。短链接在每次数据交换后都会关闭链接,而长链接则会保持开启状态直到明确要求断开。


蓝易云-五网 CN2 服务器【点我购买】


蓝易云采用 KVM 高性能架构,稳定可靠,安全无忧!蓝易云服务器真实 CN2 回国线路,不伪造,只做高质量海外服务器。海外免备案云服务器链接:www.tsyvps.com

用户头像

百度搜索:蓝易云 2023-07-05 加入

香港五网CN2免备案服务器

评论

发布
暂无评论
java如何实现Socket的长连接和短连接_百度搜索:蓝易云_InfoQ写作社区