本帖最后由 oyljerry 于 2012-02-09 11:04:50 编辑

解决方案 »

  1.   

    服务器端创建SOCKET的时候,传NULL ,那么IP就是 INADDR_ANY,表示所有IP一般情况下,如果你要建立网络服务器应用程序,则你要通知服务器操作系统:请在某地址 xxx.xxx.xxx.xxx上的某端口 yyyy上进行侦听,并且把侦听到的数据包发送给我。这个过程,你是通过bind()系统调用完成的。——也就是说,你的程序要绑定服务器的某地址,或者说:把服务器的某地址上的某端口占为已用。服务器操作系统可以给你这个指定的地址,也可以不给你。   如果你的服务器有多个网卡(每个网卡上有不同的IP地址),而你的服务(不管是在udp端口上侦听,还是在tcp端口上侦听),出于某种原因:可能是你的服务器操作系统可能随时增减IP地址,也有可能是为了省去确定服务器上有什么网络端口(网卡)的麻烦 —— 可以要在调用bind()的时候,告诉操作系统:“我需要在 yyyy 端口上侦听,所以发送到服务器的这个端口,不管是哪个网卡/哪个IP地址接收到的数据,都是我处理的。”这时候,服务器程序则在0.0.0.0这个地址上进行侦听
      

  2.   

    BOOL Create(
       UINT nSocketPort = 0,
       int nSocketType = SOCK_STREAM,
       LPCTSTR lpszSocketAddress = NULL 
    );
     Parameters
    nSocketPort
    A particular port to be used with the socket, or 0 if you want MFC to select a port. nSocketType
    SOCK_STREAM or SOCK_DGRAM. lpszSocketAddress
    A pointer to a string containing the network address of the connected socket, a dotted number such as "128.56.22.8". Passing the NULL string for this parameter indicates the CSocket instance should listen for client activity on all network interfaces.