IOCP中AcceptEx只连接不发送数据问题? 本帖最后由 VisualEleven 于 2012-06-30 12:05:13 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这种情况微软一定是有考虑的,AcceptEx在接受连接后接受第一包数据才返回,是基于性能考虑才这么设计的,但是正如你所说,恶意用户只连接不发包怎么办?你可以后台用线程检测你传递进去接受连接的那个socket,判断连接多久了而且一包数据都没发:int nSecs; int nBytes= sizeof(int); getsockopt(hAcceptSocket,SOL_SOCKET,SO_CONNECT_TIME,(char*)&nSecs, &nBytes); nSecs是 -1 表示还未建立连接, 否则就是已经连接的时间. 为了考虑性能 AcceptEx 应该直接返回,然后在完成通知中检测状态,判断无效的连接最好是应用层通过心跳来完成 为了考虑性能 AcceptEx 应该直接返回,然后在完成通知中检测状态,判断无效的连接最好是应用层通过心跳来完成 可以通过调用getsockopt(SO_CONNECT_TIME)得到连接的时长,如果超过指定的时间,就closesocket断开连接,这样避免长时间连接而不是发送任何的数据。 编辑框 谁有能在Win98下获取网卡地址的程序啊(主要是获取Subnet 和 Gateway)? qq中根据色调和亮度来调节界面的颜色和明暗,如果转换成RGB改怎么转换啊? 图像融合问题 c/s结构如何改造成b/s结构 关于ADO连接服务器的问题 这个程序看不懂??? 如何实现类似excel表格式的数据输入 是否能够修改自创对话框的相关类名称 如何将VC程序生成安装程序 mfc下usb设备拨插消息处理用c怎么写 局域网UDP传输,数据包不定长的问题?
int nBytes= sizeof(int);
getsockopt(hAcceptSocket,SOL_SOCKET,SO_CONNECT_TIME,(char*)&nSecs, &nBytes);
nSecs是 -1 表示还未建立连接, 否则就是已经连接的时间.