2012-03-19 69 views
1

我正在做一个C#客户端/ Java服务器聊天室,现在一切正常,除了一件事: 经过一段时间(一个小时左右)没有使用应用程序(或使用它,我不知道)它给了我在C#客户端SocketException在socket.EndReceive()函数:C#/ Java Socket连接丢失了吗?

A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 

待办事项Java或C#套接字连接闲置一段时间后关闭?或者它只是tcp协议? 什么是最好的方法来解决它?

谢谢大家!

巴斯

回答

1

待办事项Java或C#套接字连接闲置一段时间后关闭?

然而,防火墙和NAT尤其是做网关,常常默默。

什么是最好的方法来解决它?

实施心跳过程。即客户机和/或服务器周期性地发送(例如,每10或30秒左右)一个特殊的消息,该消息只是用于保持连接活动并且更快地检测失败的对等体。

+0

我刚刚创建了一个keepalive数据包,每分钟发送一次。还是必须更频繁?当它被修复时,我会将答案标记为已接受。谢谢! – Basaa 2012-03-19 14:03:15