Socket s1 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket s2 = new Socket(IPAddress.Parse(ip).AddressFamily, SocketType.Stream, ProtocolType.Tcp);请问大侠们AddressFamily.InterNetwork 和 IPAddress.Parse(ip).AddressFamily 有何区别?

解决方案 »

  1.   

    AddressFamily.InterNetwork代表IPV4地址,不包含V6
    IPAddress.Parse(ip).AddressFamily代表强制指定某个网卡上的IP绑定
      

  2.   


    我得慢慢理解这些意思,那一般情况应该用哪一个呢?两个效果是否一样呢? 不好意思,刚接触Socket...
      

  3.   

    效果好像一样的  一般用
    Socket s1 = new Socke(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
     因为  socket还需要绑定、 连接
    socket.Connect(ip);
    socket.Bind(ip);
    这些时候指定IP就行了
      

  4.   


    噢 我看到网上一个例子如下:Socket s2 = new Socket(IPAddress.Parse(ip).AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
    IPEndPoint ipendpoint = new IPEndPoint(IPAddress.Parse(ip), port);
    s2.Connect(ipendpoint);
    new Socket那按照这样说的话在new Socket的时候就不用指定特定的IP地址了?这样定义:Socket s1 = new Socke(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); 
    可上面这个例子在new Socket的时候已经指定IP地址了(IPAddress.Parse(ip).AddressFamily)...
      

  5.   

    这段代码
    Socket s2 = new Socket(IPAddress.Parse(ip).AddressFamily, SocketType.Stream, ProtocolType.Tcp); 
    中的 IPAddress.Parse(ip).AddressFamily 不是指定了IP  而是指定该IP对应的协议 比如该IP的协议是IPV4那么指定的协议就是IPv4 了