Запуск сокет-сервера в какао - PullRequest
3 голосов
/ 03 января 2009

Я пытаюсь написать программу, которая использует сокеты для связи с другими экземплярами себя по сети. Так как в конце концов я бы хотел написать и версию для Windows, в настоящее время я использую сокеты BSD на стороне OS X, чтобы гарантировать совместимость с (возможной) версией Windows.

Единственный способ, которым я смог до сих пор работать, - это указать мой фактический IP-адрес при создании сокета сервера. Если вместо этого я использую 127.0.0.1, я смогу подключиться только с локального компьютера.

Хотя теоретически это нормально, возникает вопрос: откуда мне знать, какой IP-адрес использовать? Я не уверен, как получить IP-адрес для текущей машины через Какао, и даже если я могу, что, если есть несколько действительных IP-адресов (таких как, например, для подключения к аэропорту и Ethernet). Как мне узнать, какой использовать? Я мог бы спросить пользователя, но это не похоже на то, что они могли / должны знать.

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

Спасибо за ваше время. :)

Ответы [ 3 ]

9 голосов
/ 03 января 2009

Используйте 0.0.0.0 в качестве IP-адреса для прослушивания. Он будет прослушивать все адреса.

Возможно, для этого адреса в используемом вами API сокета определена константа. Если вы используете стандартный API сокетов C, это INADDR_ANY.

4 голосов
/ 04 января 2009

При выполнении любого вида программирования сокетов, руководство Beej по сокетам. Он был вокруг на протяжении веков и охватывает большинство основ.

http://beej.us/guide/bgnet/

4 голосов
/ 03 января 2009

Существует сетевой протокол обнаружения, называемый Bonjour , который вы можете использовать для публикации своих серверов в сети, и тогда ваши клиенты могут автоматически подключаться к ним. Он кроссплатформенный, но обычно называется нулевой конфигурацией в других системах.

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