программа обмена мгновенными сообщениями - работает с 127.0.0.1, но не с другими компьютерами - PullRequest
0 голосов
/ 06 августа 2010

Я следовал учебнику по http://www.codeproject.com/KB/IP/beginningtcp_cpp.aspxt

, который учит, как использовать winsockets с c ++, мне, наконец, удалось заставить мою программу работать, протестировав с 127.0.0.1, я могу открыть два экземпляра процесса моей программы и затем заставить один прослушивать порт (700), а затем подключитесь к нему с другой программой через порт 700 с ip 127.0.0.1, после чего я могу без проблем отправлять сообщения между двумя программами.

Я отправил программу своему другу, получил его ip и велел ему прослушивать порт 700, затем я попытался подключиться к его ip-адресу и порту 700, программа зависла примерно на 20 секунд (потому что он у меня включен) тот же поток, что и у моего окна), а функция connect () возвращает здесь SOCKET_ERROR:

if (connect(g_sock, (SOCKADDR*)&target, sizeof(target)) == SOCKET_ERROR)
{
    return 4;
}

Я пробовал другие порты, и я разрешил это на брандмауэре Windows .. отключил брандмауэр окна, отключил avast.

мой код почти такой же, как в учебнике, и я также скачал код в учебнике, и я получил ту же ошибку, что и мой.

Я использую Windows 7 Ultimate 32 бит

Ответы [ 2 ]

0 голосов
/ 06 августа 2010

Вы пытаетесь это через Интернет? Где-то между обоими компьютерами может быть межсетевой экран.

В идеале вы должны сначала протестировать вашу программу в локальной сети . Это более подходящая среда для такого рода испытаний.

0 голосов
/ 06 августа 2010

Кто-нибудь из вас стоит за брандмауэром / маршрутизатором NAT? IP-адрес, который вы предоставляете внешнему миру, может не совпадать с тем, который использует ваш собственный компьютер, из-за чего программа не сможет связаться с вами, если у вас не установлен какой-то туннель через NAT.

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