小d我刚学CSocket1周,想通过CSocket来实现client去server查询数据。
可是问题来了。server开了一个2044这样的端口,然后client连接就可以查到数据,那怎么防止别的程序也连上2044端口来偷我的数据阿?再一个菜问题:这个server开了2044端口,可以支持多少个客户端来同时查询阿?
server怎么来分辨这些客户端阿?

解决方案 »

  1.   

    第一个问题,可以通过设定自己的数据交互协议来保证只有自己的客户端来使用这个端口
    如,客户端连接后必须先发送一个特定的字符串等等第二个问题,能支持同时查询的数目得看你程序是怎么实现的,某些实现就只能一个客户端同时查询,某些实现能支持大量客户端同时查询。如何区分这些客户端你也可以加在协议里面,要求客户端给出自己的身份。另外你可以用getpeername来获得客户端连接的IP和Port
      

  2.   

    第一个问题xstring(麻雀)已经回答了。
    第二个问题,我补充一下。listen函数中可以设定。
    int listen (
      SOCKET s,    
      int backlog  
    );
    backlog加以确定。server端accept()到连接时
    SOCKET accept (
      SOCKET s,                   
      struct sockaddr FAR* addr,  
      int FAR* addrlen            
    );
    从addr中可以得到client的IP,PORT信息,从而加以控制。