大致流程是这样的,
客户端使用 connect连接
服务器端
bind
listen(sock, SOMAXCONN)
for(;;)
{
accept do something... 处理连接
}但在实际使用中发现有时会连接不上,我用sniffer抓包,发现连接失败时实际上是TCP三次握手失败。客户端 SYN 包已经发出,但就是没有收到服务器的SYN/ACK 包
然后客户端两次重发SYN包(Retransmission of Frame 3272), 依旧没有收到SYN/ACK包后宣告失败。因为并不是一台客户端电脑有这个问题,而且IE浏览器访问服务器上的WEB没有问题,所以应该排除线路问题。请问大侠1)什么时候服务器才发回SYN/ACK,是accept前还是accept后?
2)do something... 处理连接部分如果效率低下是否有影响
3)是什么造成服务器无法发回SYN/ACK包。谢谢高手指点!
客户端使用 connect连接
服务器端
bind
listen(sock, SOMAXCONN)
for(;;)
{
accept do something... 处理连接
}但在实际使用中发现有时会连接不上,我用sniffer抓包,发现连接失败时实际上是TCP三次握手失败。客户端 SYN 包已经发出,但就是没有收到服务器的SYN/ACK 包
然后客户端两次重发SYN包(Retransmission of Frame 3272), 依旧没有收到SYN/ACK包后宣告失败。因为并不是一台客户端电脑有这个问题,而且IE浏览器访问服务器上的WEB没有问题,所以应该排除线路问题。请问大侠1)什么时候服务器才发回SYN/ACK,是accept前还是accept后?
2)do something... 处理连接部分如果效率低下是否有影响
3)是什么造成服务器无法发回SYN/ACK包。谢谢高手指点!
解决方案 »
- VC++解析协议的时候,接收函数无法向下运行?
- 在写一个服务器,应该一直保持用户的连接吗?
- 请教DirectShow摄像头抓图处理
- 如何在ATL中设置自定义打印纸张大小
- 两个控件不会操作,MS DataGrid、MS ADC。请大家帮忙。
- COM中如何传递大量数据struct,要求跨语言开发
- 怎样在模式对话框显示后立即执行一个函数???帮帮忙阿!!!!
- vb的picturebox控件能支持256色以上吗?
- 如何用picture cintrol做出多个圆移动效果
- 求救!!!HTMLHelp.h 和 HTMLHelp.lib 哪里可以得到?
- 日历控件在debug版和release版的不同表现!
- 怎样在Access中使得自动编号字段重新重0开始计数?
把do somthing那些语句去掉会怎么样?
如果后面的do somthing 作的事情太多了,Accept也忙不过来了
listen(local_socket, 5);
=>
listen(local_socket, 500);
用SO_REUSEADDR
还有,同意 aben456(快要升级了&& hunting job)
最好不要在for循环中处理,为每一个连接开一个线程试试