我在远程几台服务器上部署了个socket服务端,本地客户端连接上去后,客户端5分钟内没有发送消息准时自动断开,需要重连,但是其中有一台服务器不会出现这个请况。
然后如果在局域网内部署socket服务端,客户端连接却不会有超时自动断开的问题,这是什么原因?
有人说是服务器上系统环境TCP参数配置问题,但是具体是什么参数呢?
我现在想不管什么环境,socket客户端连接后就不会断开,先不管是在socket程序里配置什么东西,我现在想知道系统环境这边对socket程序的影响,麻烦大家帮我找找原因,谢谢啦
然后如果在局域网内部署socket服务端,客户端连接却不会有超时自动断开的问题,这是什么原因?
有人说是服务器上系统环境TCP参数配置问题,但是具体是什么参数呢?
我现在想不管什么环境,socket客户端连接后就不会断开,先不管是在socket程序里配置什么东西,我现在想知道系统环境这边对socket程序的影响,麻烦大家帮我找找原因,谢谢啦
解决方案 »
- 求教两个基础问题,其中一个长期困扰我。
- MFC dll中调用模式对话框的问题,急啊,帮帮忙
- 我想用完成端口发送和接收数据,可是遇到问题了,我接收到数据后,应该在哪里解析呢。解析以后我要加一些自己的操作,然后发送,可是在哪
- 如何用程序实现网卡的启动,合禁用?????????
- 关于字符串
- 一个简单的问题:float类型的四舍五入的函数是什么?谢谢大家!
- 求助输出对齐问题
- 那位有电子工业出版社的《21天学通WINDOWS编程》的配书源代码,愿意以好东东交换。
- 为什么我的DirectX程序在win2000下变慢了很多?
- 报错:Debug assertion failed! Expression:vector subscript out of range
- 元素上添加Behavior导致JS脚本出错
- 用API怎么实现多线程的串口通信
{
DWORD dwError = 0L;
DWORD dwBytes = 0L;
tcp_keepalive sKA_Settings = {0}, sReturned = {0} ;
sKA_Settings.onoff = bOnOff;
sKA_Settings.keepalivetime = nKeepAliveTime; sKA_Settings.keepaliveinterval = nKeepAliveInterval;
if (WSAIoctl(m_Socket, SIO_KEEPALIVE_VALS, &sKA_Settings,
sizeof(sKA_Settings), &sReturned, sizeof(sReturned), &dwBytes,
NULL, NULL) != 0)
{
dwError = WSAGetLastError() ;
}}
用这个方法把socket的keepalive模式打开:
pConn->SetKeepAlive(TRUE, 6000, 1000); //每6秒发送一次keepalive,超时1秒重发这样就不会因为长时间无数据而被防火墙强行RST