java - 关于socket长连接 新手向
PHP中文网
PHP中文网 2017-04-18 10:17:02
0
2
342

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)形式的心跳包吗?如果是,那在心跳期间我怎么能发送有效的数据(假设心跳数据为无效的)呢?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
阿神

コードは、スレッドが終了してリサイクルされたことを示している可能性がありますsocket连接。不知道你说的server是用什么开发的,如果是原生的socket,好像默认情况下并没有需要心跳包才可以维持连接,如果使用了其他框架并且设置了idle time、接続を維持するにはハートビート パケットが必要であるとサーバーは判断し、一定期間アイドル状態になると再度接続できない可能性があると判断し、接続を閉じます。リソースの無駄を避けます。 (個人的な理解です)

いいねを押す +0
左手右手慢动作

これはメインスレッドが終了したためです。最後に別の Thread.sleep(1000000) を追加して試してみてください。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!