开一个服务端口,但是只想同时接受一个客户端的连接,怎么做?
开始我觉得listen(SOCKET s, int backlog)中的backlog是限制连接的,但试了一下,把它设成1不管用,还是可以有多个客户端连进来。
是不是必须要自己先接受第二个联接,然后再关掉?

解决方案 »

  1.   

    你不调用accept,看看是否能有多个用户能connect成功????
      

  2.   

    可以自己管理。每链接成功后就记录一个,关闭就减少一个。定义一个最大值来限制。
    #define MAX_CLIENT_NUM 300
    int socket_arry[MAX_CLIENT_NUM+1];
    ... ...socket_arry[i] = socket_fd;... ...
      

  3.   

    1) listen(SOCKET s, int backlog)中的backlog是限制同一时间点能够连接到服务器的连接数量,也就是允许服务器同时处理的连接请求的数量,而不是服务器可以连接的客户数量。
    2) 在accept()中,检查连接列表的数量是否超过目标,没有超过将新的连接保存到客户列表中,否则不接收新的连接。