如何在Linux / C中获得更稳定的套接字连接

时间:2009-12-09 09:15:16

标签: c sockets

我正在运行一个游戏网站,用户使用Adobe Flash客户端连接到运行在Fedora Linux机器上的C服务器。

用户经常抱怨断开连接。通常它们是“通过对等方重置连接” - 断开连接。

有没有办法让连接更稳定,还是全部取决于从用户主机到服务器的路由?

我尝试的一件事是每隔一分钟以明文形式发送PING以使其更加稳定,以避免出现超时问题。

有人有更多想法吗?

3 个答案:

答案 0 :(得分:1)

您没有耗尽服务器上给出服务器进程的套接字/内存使用/ cpu的数量,是吗?

请与ulimit核对。

此外,如果可能,尝试跟踪源代码中的错误消息(当发送RST数据包时),即send()或accept()返回错误值时。在这种情况下,将调试消息打印到日志中;如果您真的想要调试它,请对服务器进行模拟:

  • 在单独的计算机(可能是服务器的克隆)上运行它进入调试模式
  • 模拟数千个连接(或找到网络利用程序)
  • 回溯电话和/或嗅探连接

答案 1 :(得分:0)

你在哪里运行服务器?
在家?工作中?在托管设施?
这将产生很大的不同。

您是否可以将应用程序设计为连接到服务器上的两个插槽,然后进行负载平衡或使其处于主动/被动(或主动/主动)?

答案 2 :(得分:0)

您可以使用SO_KEEPALIVE TCP套接字选项。