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

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

左手右手慢动作

이는 메인 스레드가 종료되었음을 의미합니다. 그 뒤에 Thread.sleep(1000000)를 추가해 보세요.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!