优艾设计网

关于socket长连接 新手向?

优艾设计网 https://www.uibq.com 2023-04-17 14:15 出处:网络 作者:电脑技术
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,基于TCP的socket应该也是长连接; public static void main(String[] args) throws IOException {Socket s = new Socket(\"127.0.0.1\", 8081);} 我不明白

TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,基于TCP的socket应该也是长连接;

public static void main(String[] args) throws IOException {Socket s = new Socket("127.0.0.1", 8081);}

我不明白一点,就是运行如上代码,会得到一个socket(假设服务器已开启),可是为什么我运行后程序会自动结束并关闭socket呢?我明明没有调用s.close(),

请问如何使程序保持长连接,只能用while(true)形式的心跳包吗?如果是,那在心跳期间优艾设计网_电脑技术我怎么能发送有效的数据(假设心跳数据为无效的)呢?


canl优艾设计网_设计LOGOieABC 2022-06-21 18:59

这个应该是main线程退出了,你在后面加一个Thread.sleep(1000000)试一下。


年少憔悴魂 优艾设计网_Photoshop论坛 2022-06-21 19:17

你的代码可以说明线程结束回收了socket连接。不知道你说的server是用什么开发的,如果是原生的socket,好像默认情况下并没有需要心跳包才可以维持连接,如果使用了其他框架并且设置了idle time,才需要心跳包来维持这个连接,服务器认为你空闲了一段时候后可能就不会再连接了,为了避免浪费资源就把你的连接关闭了。(个人理解)


0

精彩评论

暂无评论...
验证码 换一张
取 消