2017-01-20 17 views
1

Моя локальная сеть состоит из маршрутизатора BT «Smart Hub», настольного компьютера, подключенного через Ethernet к маршрутизатору, и ноутбука, подключенного через Wi-Fi к маршрутизатору.Отправка UDP-пакетов по локальной сети с помощью LuaSocket

Я пытаюсь использовать библиотеку lua под названием «lua socket», чтобы отправить udp-пакеты между двумя компьютерами.

Я скопировал некоторые очень общие серверные и клиентские сценарии от here, чтобы узнать, действительно ли поступают пакеты.

Мой рабочий стол настроен на наличие статического частного IP-адреса в локальной сети, и если я запускаю как сценарий сервера, так и сценарий клиента с использованием случайного порта и частного IP-адреса рабочего стола, сервер успешно получает сообщения.

Я надеялся, что смогу запустить клиентский скрипт на ноутбуке и настроить тот же IP-адрес и тот же порт, и пакет udp появится на рабочем столе, но это, похоже, не работает.

У меня есть много вопросов по этому поводу, как мое знание сетей не хватает:

Может быть, что окна брандмауэры либо компьютера или брандмауэр маршрутизатора вмешиваются с пакетами?

Нужно ли отправлять пакеты с ноутбука на шлюз по умолчанию и использовать перенос портов, чтобы они могли доходить до рабочего стола?

Является ли тот факт, что ноутбук подключен через Wi-Fi, а не к сети, вызывающей проблему?

Есть ли еще проблемы, о которых я в настоящее время не знаю?

Спасибо за любой совет (или указатель на дополнительную информацию), который вы можете мне дать.

+1

Я заметил 'udp: setpeername (" 127.0.0.1 ", 53474)' в примере кода. Вы не используете 127.0.0.1 на клиенте или на сервере, правильно? Не. 127.0.0.1 на стороне сервера исключает прием трафика с любой другой машины, а на стороне клиента это означает, что вы отправляете себя, конечно. Вы пытались сделать это в противоположном направлении, обращая клиент и сервер между двумя машинами? Вы отключили брандмауэр Windows? Могут ли две машины пинговать друг друга? Вы пробовали Wireshark? –

+0

Правильно, 127.0.0.1 является localhost, поэтому я заменил его на клиентском скрипте 192.168.1.71, который является статическим IP для моего рабочего стола, на котором будет выполняться сценарий сервера.Сам скрипт сервера, похоже, отвечает на любые отправленные ему пакеты, поэтому ему не нужно указывать адресат IP-адреса. Я попробую противоположное направление, и я буду изучать pinging и Wireshark, спасибо за предложения. – James

+0

Мне удалось получить пакеты при размещении сервера на моем ноутбуке, однако я не могу реплицировать это, когда я размещаю сервер на своем рабочем столе. Я предполагаю, что это связано с некоторыми различиями в настройках конфигурации Windows. – James

ответ

2

Как оказалось, брандмауэр Windows на моем рабочем столе был сконфигурирован для блокировки всех входящих данных из любых экземпляров исполняемого файла lua, которые я запускал, для выполнения сценариев LuaSocket.

Я использовал один из них на своем ноутбуке, чтобы выполнить сценарии на стороне клиента.

Это объясняет, почему ответы от сервера (при размещении на ноутбуке) было получения через: потому что они были технически с сервера и не из исполняемого файла и, следовательно, получили через брандмауэр.

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