2013-09-12 2 views
1

Я пытаюсь создать базовый клиентский сервер, поэтому я могу его изменить, а затем выполнить анализ в IDA. Я указал на примеры сокет программирования Beej в качестве окончательного руководства:Примеры клиентских сокетов сервера Beej не работают в cygwin

http://beej.us/guide/bgnet/output/html/multipage/clientserver.html

Я обычно использую Cygwin в моей рабочей среды для программирования и тому подобное. Когда я компилирую эти программы, серверная программа не работает под Cygwin, хотя клиентская программа делает это.

Когда тот же самый код сервера скомпилирован и запущен под Linux, нет проблем, он работает нормально.

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

client: connect: connection timed out 
client: failed to connect 

и захват пакетов показывает, что TCP SYN пакеты посылаются на сервер, но он никогда не отвечает.

Может ли кто-нибудь объяснить мне причину, по которой это не удается под Cygwin, и предложить решение?

ответ

2

Я узнал, что программа, предоставленная Beej, по умолчанию была на IPv6 на сервере. Решение заключалось в том, чтобы либо адресовать адрес сервера в клиенте, используя его IPv6-адрес, либо изменить сервер на использование IPv4. Это может быть достигнуто путем изменения кода сервера от

hints.ai_family = AF_UNSPEC; 

в

hints.ai_family = AF_INET; 

Надеется, что это поможет кому-то.

Смежные вопросы