Проблема с IpEndPoint - PullRequest
       9

Проблема с IpEndPoint

0 голосов
/ 17 мая 2009

прога в 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-адрес удаленного хоста, который отображается в списке, и, соответственно, для начала приема сообщений необходимо создать IPEndPoint (clientIP).

newSock - переменная типа сокет, инициализированная как:

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

Проблема заключается в том, что я связываю сокет newSock с IPEndPoint clientIP, где я получаю сообщение о том, что это неверный адрес. Однако для перекрестной проверки я попытался отобразить ip-адрес в окне сообщения, которое он сделал правильно. Так что именно не так ?? 1012 *

1 Ответ

2 голосов
/ 17 мая 2009

Вы не должны привязывать сокет к адресу удаленного хоста. Он используется для указания того, какой входящий IP-адрес вы должны прослушивать. Вам следует либо указать один из ваших собственных IP-адресов (если вы хотите прослушивать только один IP-адрес), либо указать IPAddress.Any (0.0.0.0) для прослушивания всех имеющихся у вас IP-адресов.

Кстати, если вы хотите подключиться к удаленному адресу, вам вообще не следует использовать Bind. Вы бы просто использовали Connect метод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...