我希望在一个套接字上只能存在一个连接.有没有专门的函数和选项来设定.
同时,要怎样才能确定已存在的连接还保持活动状态呢?.
请大家指教阿.谢谢

解决方案 »

  1.   

    好像不完是一对一,例如做listen的socket就可以同时连接多个socket,另外,listen()后再accept()后语句操作上是一对一,但归根都是通过listen()时的同一个端口对外通信的(由于我对底层不了解,盼望高手对这个地方解释一下)。
    楼主“要怎样才能确定已存在的连接还保持活动状态呢?”
    windows socket 函数select可以判断这个,mfc的socket也有select。如果用异步socket在对方断开时可以收到OnClose()消息。
      

  2.   

    我想是不是可以用listen(socket,1)应该可以满足你的要求。因为这样设置,它只和一个请求建立连接。
      

  3.   

    listen(socket,1)不行阿.最后的参数只是说可以允许的待决的请求连接的队列的长度为1.不能说是只和一个请求建立连接.
    可能是我表述不清,应该说怎样限制监听套接字在建立一个连接后不再接受别的连接请求.只有在已经建立的连接不存在后才可以接受另外的连接请求并建立连接.
    我想知道有没有什么简捷的方法.如果用一个连接计数器来做也是可以,只是有点点麻烦.
    另外.我还想请教监听套接字在不接受对方的连接请求时如何返回给对方一个类似于"连接失败"之类的消息.这样可以让对方针对这个消息可以定制自己所要采取的动作.
    同步的时候,有没有什么函数可以判定已存在的连接是否还保持活动状态呢?
    请大家帮忙。
      

  4.   

    你用ACCEPT的时候,就用Listen的套接字接受连接请求,这样就不会再响应连接请求了,还有你如果用阻塞模式,不用WHILE也不会再接收请求了