读书人

在写S/C应用时小弟我们能不能自己主

发布时间: 2012-09-29 10:30:01 作者: rapoo

在写S/C应用时,我们能不能自己主动去清空侦听队列??
当我们在写S/C应用的时候,我们在Server端会建立一个CSocket来监听连接进来的Client端Scoekt,当多个用户接入,而人数超过Listen函数中设置的数字的时候,程序就会把多余的客户连接消息放置到一个侦听队列中,我比较想知道,我们能不能自己清空侦听队列?

[解决办法]
楼主你用什么模型?
如果不用模型,这个还真得完全自己来处理呢。
如果用模型,基本上要根据模型自己的情况来处理了,一般都有这个配置和接口的。
[解决办法]
假如你的最大人数是 PERSON_MAX, 当用客户到来时,你的程序会调用 accept,每次调用accept成功后,你可以把一个计数器加1,当计数器超过 PERSON_MAX 时,你直接调用closesocket就把这个客户给清除了。
在Windows socket中一旦程序收到 FD_ACCEPT消息,连接已经在 TCP侦听队列中了,应用程序无法不接受这个连接,只能是先 accept 后,再closesocket.你可以参考《WinSock网络编程经络》第15章,有对连接队列的详细解释,这里有源码:http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]
无法操作等待队列的,这与模型无关。
这个等待队列是等待被accept的队列,你甚至还不能控制哪些accept,哪些不accept,只能accept之后再关闭连接。

读书人网 >VC/MFC

热点推荐