2017-01-20 6 views
1

Mein LAN besteht aus einem BT "Smart Hub" -Router, einem Desktop-Computer, der über Ethernet mit dem Router verbunden ist, und einem Laptop, der über WLAN mit dem Router verbunden ist.Senden von UDP-Paketen über ein LAN mit LuaSocket

Ich versuche eine Lua-Bibliothek namens "lua socket" zu verwenden, um UDP-Pakete zwischen den beiden Computern zu senden.

Ich habe einige sehr generische Server- und Clientskripte von here kopiert, um zu sehen, ob Pakete tatsächlich ankommen.

Mein Desktop ist so konfiguriert, dass er eine statische private IP-Adresse im LAN hat. Wenn ich sowohl das Server-Skript als auch das Client-Skript über einen zufälligen Port und die private IP-Adresse des Desktops ausfühle, empfängt der Server die Nachrichten erfolgreich.

Ich hatte gehofft, dass ich das Client-Skript auf dem Laptop und zielen Sie die gleiche IP und den gleichen Port und das UDP-Paket würde auf dem Desktop angezeigt werden, aber das scheint nicht zu funktionieren.

Ich habe viele Fragen darüber, wie meine Kenntnisse der Vernetzung fehlt:

Könnte es sein, dass die Windows-Firewall von einem der Computer oder der Firewall des Routers mit den Paketen stören?

Muss ich die Pakete vom Laptop zum Standardgateway senden und Portforwarding verwenden, damit sie den Desktop erreichen können?

Ist die Tatsache, dass der Laptop über WLAN statt Ethernet verbunden ist, ein Problem verursacht?

Gibt es weitere Probleme, die mir derzeit nicht bekannt sind?

Vielen Dank für Ratschläge (oder Hinweise auf weitere Informationen), die Sie mir geben können.

+1

Ich bemerkte 'udp: setpeername (" 127.0.0.1 ", 53474)' im Beispielcode. Sie verwenden 127.0.0.1 weder auf dem Client noch auf dem Server, richtig? Nicht. 127.0.0.1 auf der Serverseite wird den Empfang von Datenverkehr von einem anderen Computer ausschließen, und auf der Client-Seite bedeutet das natürlich, dass Sie an sich selbst senden. Haben Sie versucht, dies in die entgegengesetzte Richtung zu tun, indem Sie Client und Server zwischen den beiden Maschinen umkehren? Hast du die Windows Firewall ausgeschaltet? Können sich die beiden Maschinen gegenseitig pingen? Hast du Wireshark ausprobiert? –

+0

Korrekt, 127.0.0.1 ist localhost, also habe ich das auf dem clientseitigen Skript mit 192.168.1.71 ersetzt, das ist die statische IP für meinen Desktop, auf dem das Serverskript läuft.Das Server-Skript selbst scheint auf alle Pakete zu antworten, die an es gesendet werden, so dass es kein IP-Adressziel angeben muss. Ich werde die umgekehrte Richtung versuchen und ich werde in Pinging und Wireshark suchen, danke für die Vorschläge. – James

+0

Es ist mir gelungen, Pakete zu empfangen, wenn ich den Server auf meinem Laptop hocke, aber ich kann das nicht replizieren, wenn ich den Server auf meinem Desktop hosten. Ich nehme an, dies liegt an einigen Unterschieden in den Windows-Konfigurationseinstellungen. – James

Antwort

2

Wie sich herausstellte, wurde die Windows-Firewall auf meinem Desktop so konfiguriert, dass alle eingehenden Daten von allen Instanzen der lua-Programmdatei, die ich zur Ausführung meiner LuaSocket-Skripte ausführte, blockiert wurden.

Ich habe eine von diesen auf meinem Laptop ausgeführt, um die clientseitigen Skripts auszuführen.

Dies erklärt, warum Antworten vom Server (wenn auf dem Laptop hosted) waren durch immer: weil sie technisch vom Server und nicht aus dem ausführbaren waren und daher durch die Firewall bekamen.

Sobald ich diese Verbindungen zugelassen habe, empfängt der Server korrekt alle Pakete, die an seinen Port gerichtet sind.