本帖最后由 VisualEleven 于 2010-12-06 09:37:01 编辑

解决方案 »

  1.   

    客户端的socket不用bind函数 
    系统随机分配一个可用端口
      

  2.   

    如果在不使用bind()绑定,客户端则使用的是随机端口
      

  3.   


    socket初始化的时候可以绑定IP
    const char LocalIP[] = "10.222.4.14";
    SOCKADDR_IN Local; 
    Local.sin_family = AF_INET;  
    Local.sin_addr.s_addr = inet_addr(LocalIP);
    //Local.sin_port = htons(0);
    //Local.sin_addr.s_addr = htonl(INADDR_ANY);
    int ret = bind(sk,(LPSOCKADDR)&Local,sizeof(SOCKADDR_IN));
    这样就可以选择重哪块网卡出去了
      

  4.   

    客户端要使用指定端口需要使用bind绑定,否则为系统分配随机端口
      

  5.   

    对于没有BIND的SOCKET,当建立连接后,你可以用getsockname 得到绑定的SOCKET相关信息。
    具体请参阅MSDN