好好的 ServerSocket 久了会自己 Close 是什么情况.......

2016-08-26 18:09:26 +08:00
 ChinaTelecom

核心逻辑其实巨简单,就是

while true:
	try
		socket = serverSocket.accept
		xxxx(socket)
 		......
	catch
		......

这样的。。然后程序跑个几小时基本没问题,然而有时更久后在有新连接进来以后 accept 居然会报 SocketClosedException 出现也没什么规律 不过有个三四次了 确认程序没有任何其他地方 close 这个 而且真关了的 ServerSocket 不是应该调用 accept 时立即爆 Exception 么 这个居然是继续阻塞着每来个新连接报一次?!

3332 次点击
所在节点    Java
6 条回复
wizarot
2016-08-26 18:55:01 +08:00
你试试增加个心跳信号来维持看看?
可能是超时了.
ChinaTelecom
2016-08-26 19:46:46 +08:00
@wizarot accept 的超时我还特意设成 0 了...就是无限
Comdex
2016-08-26 19:51:21 +08:00
是不是 clientSocket 关闭了....
chareice
2016-08-26 21:26:35 +08:00
心跳包,应用层的心跳包。
owt5008137
2016-08-26 21:42:55 +08:00
倒是贴一下 Exception 的内容啊。看看 Message 什么的,能有调用栈更好
leaves615
2016-08-27 00:13:21 +08:00
链路黑洞

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/301998

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX