TcpClient SocketException .NET

Мой компьютер настроен на автоматическое получение IP-адреса. Когда я использую ipconfig /all, это выглядит примерно так:

Windows IP Configuration

PPP adapter Broadband Connection:

Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 95.38.95.204
Subnet Mask . . . . . . . . . . . : 255.255.255.255
Default Gateway . . . . . . . . . : 0.0.0.0

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::64d7:e4ee:ba7e:1ede
IPv4 Address. . . . . . . . . . . : 192.168.72.198
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.0.1

Должен ли я использовать 95.38.95.204 или 192.168.72.198 в качестве IP-адреса для сервера и клиента?

Когда я использовал 192.168.72.198, сервер успешно подключился, но клиент выдал SocketException, как показано ниже.

 var tcpServer = new TcpClient();
 tcpServer.Connect(new IpAddress("192.168.72.198"), 1986);

Попытка подключения не удалась, так как подключенная сторона не ответила должным образом через некоторое время, или сбой установленного подключения, потому что подключенный хост не ответил 192.168.72.198:1986

Я использовал эти статьи в geekpedia по адресу http://www.geekpedia.com/tutorial239_Csharp-Chat-Part-1---Building-the-Chat-Client.html

Спасибо, если кто-нибудь может мне помочь.


person Sadegh    schedule 02.07.2010    source источник


Ответы (1)


Если вы тестируете его на своем компьютере, вы можете использовать 127.0.0.1 или "localhost".

Как правило, следует использовать адрес IPv4 (192.168.72.198).

Похоже, у вас еще нет сервера, работающего на этом сокете.

person Matt Mitchell    schedule 02.07.2010
comment
спасибо, но автор статьи сказал, что мы можем использовать 192.168.72.198, и это должно работать правильно. а на моем компе нет. мне нужно изменить любой раздел в настройках сети? Я использую Windows 7, иначе, когда я выключаю свой модем adsl и получаю команду ipconfig, результат ничего и говорит, что медиа отключено - person Sadegh; 02.07.2010
comment
Я согласен с Графейном; наиболее вероятной причиной этой ошибки является то, что ваш серверный процесс не запущен. Вы можете проверить это, запустив netstat -a и найдя порт 1986 в состоянии Listening. Что касается вашего комментария, вам нужна сеть, чтобы иметь сетевой адрес; вот почему 192.168.72.198 исчезает, когда вы выключаете модем. - person Stephen Cleary; 02.07.2010
comment
@Stephen, когда я запускаю netstate -a в cmd, это показывает следующее: TCP 192.168.72.198:1986 Sadegh-PC:0 LISTENING, но мой клиент все еще не может подключиться к этому ip:port, и было выдано исключение SocketException (тайм-аут и соединение не удалось) - person Sadegh; 02.07.2010
comment
Попробуйте использовать IPAddress.Any для IP-адреса вашего сервера. Это стандартная практика для серверов. - person Stephen Cleary; 02.07.2010
comment
Он может слушать, но отвечает ли он на самом деле? Если вы выполните telnet 192.168.72.198 1986 в командной строке, притворитесь клиентом и отправите все, что клиент хотел бы, набрав это и нажав Enter, что произойдет? - person Matt Mitchell; 05.07.2010