IpEndPoint问题

时间:2009-05-16 20:44:52

标签: c# .net sockets

c#中的编程:

  private void listBox1_Click(object sender, EventArgs e)
  {
        String data = (String)this.listBox1.SelectedItem;
        data = data.TrimEnd(new char[] { '\r', '\n' });

        try
        {
            ip = Dns.GetHostAddresses(data);
        }
        catch (SocketException ex)
        {
            MessageBox.Show(ex.ErrorCode.ToString());
        }

        clientIP = new IPEndPoint(ip[0], 6000);

        newSock.Bind(clientIP);
        newSock.Listen(100);

        resetEvent.Set();
    }

在上面的代码中,我获取了列表框中显示的远程主机的ip地址,并相应地为了开始接受需要创建IPEndPointclientIP)的消息。 / p>

newSock是一个类型为socket的变量,初始化为:

newSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

问题出在我将套接字newSock绑定到IPEndPoint clientIP的行中,我收到一条错误消息,说明它是一个无效的地址。 但是为了交叉检查,我试图在正确执行的消息框上显示ip-address。 究竟出了什么问题?

1 个答案:

答案 0 :(得分:2)

您不应将套接字绑定到远程主机地址。它用于指示您应该监听哪个入站IP地址。您应该指定一个自己的IP地址(如果只想监听单个IP)或指定IPAddress.Any(0.0.0.0)来监听您拥有的所有IP地址。

顺便说一下,如果要连接到远程地址,则根本不应使用Bind。您只需使用Connect方法