TCP/IP funktioniert nicht im Netzwerk

  • Hallo liebe Scripter!

    Vorab, ich möchte keine Lösung für mein Problem, sondern würde lediglich gerne wissen was falsch sein könnte und mich dann selber um eine Lösung kümmern.

    Zum eigentlichen Thema.
    Ich versuche mich grade ein wenig an TCP/IP Kommunikation. Daher habe ich sowohl einen Server, als auch einen Clienten erstellt. Da der Server auch an den Clienten senden können soll, haben beide eine Funktion zum verbinden und senden, wie auch zum empfangen.

    Wenn ich beide nun auf meinem Rechner starte funktioniert alles einwandfrei. Versuche ich jedoch 2 Computer über mein Heimnetzwerk zu verbinden, kommt keine Verbindung zustande.

    Server und Client im Anhang, freue mich auf eure Antworten!

    MfG
    onlyjb

  • Ohne mir das genauer anzusehn und zu testen würde ich den Fehler in erster Linie beim Router suchen. Vermutlich hast du dort kein Portforwarding der entsprechenden Ports zu den IP Adressen der Rechner im Netz eingerichtet.

    Soweit ich das sehe sind sowohl "Client" als auch "Server" jeweils Server und hören auf einem eigenen Port. Du hast also keine typische Client Server Kommunikation bei der immer der Client die Verbindung aufbaut, sondern ein P2P System bei dem jeder beteiligte eine Verbindung einleiten kann. Das bedeutet, dass der jeweilige Listening Port per Portforwarding im Router erreichbar gemacht werden muss.

    Bedeutet:

    Client IP: 192.168.1.5 -> Port 4322 muss auf Client IP weitergleietet werden
    Server IP: 192.168.1.6 -> Port 4321 muss auf Server IP weitergleietet werden


    Zusätlich muss (sofern vorhanden) die lokale Firewall an den Rechnern eine eingehende Kommunikation auf dem betreffenden Port erlauben.


    EDIT:

    Ahja deine Scripte versuchen im übrigen eine Verbindung zur eigenen IP herzustellen. Selbstverständlich muss hier die IP des Zielrechners zum connecten verwendet werden. Ansonsten funktionierts natürlich nur wenn die Scripte auf dem selben Rechner laufen und somit die selbe IP verwenden.

  • Ohne das Script anzuschauen, denke ich mal, dass der Router dran schuld ist. Im Router muss man nämlich die Kommunikation zwischen 2 PCs im Heimnetzwerk u.U. erlauben (frag mich nicht, wie das genau aussieht, ich kenne mich da nicht so aus). Suche einfach mal in der Weboberfläche deines Routers nach "Port-Weiterleitung" oder ähnlichem. Dann musst du meist die IP deines PCs im Netzwerk, den Port und das Protokoll und die Ziel IP eingeben. Von Router zu Router ist das ein wenig verschieden. Falls du es nicht hinbekommst, einfach mal im Handbuch suchen.
    Edit: Mist, zu langsam :(

  • Wenn beide PCs im selben Netzwerk sind, musst du bei beiden Scripts die IP des Server PCs verwenden, die ihm in diesem Netzwerk zugewiesen wurde. Wenn dein PC die IP über den DHCP Service des Routers automatisch zugewiesen bekommt, dann musst du die bei jeder neuen Verbindung mit dem Router eventuell neu auslesen und in die Scripte eintragen... Wichtig: Ich spreche von der lokalen IP des Computers im Netzwerk deines Routers nicht der öffentlichen IP deines Routers.
    An deiner Stelle würde ich, vorausgesetzt du hast einen Router, herausfinden was der Adressenbereich für lokale fest zugewiesene IPs ist. In meinem Fall sind das alle IPs von 192.168.178.2 bis 192.168.178.20. In den Netzwerkeinstellungen des Servers trägst du jetzt eine feste IP ein die in diesem Adressenbereich liegt. Dadurch bekommt dein Server immer diese IP im Netzwerk sobald er sich verbindet. Beim Client ist die IP natürlich relativ egal. Jetzt musst du nur noch die IP des Servers in beiden Scripts verwenden, und falls du eine Firewall hast noch den Port auf den PCs öffnen. Dann sollte es funktionieren.
    Manche Router verhindern eine Kommunikation zwischen Geräten wenn eines davon über WLAN verbunden ist. Das müsstest du dann ggf. in den Einstellungen des Routers ändern.

  • An deiner Stelle würde ich, vorausgesetzt du hast einen Router, herausfinden was der Adressenbereich für lokale fest zugewiesene IPs ist. In meinem Fall sind das alle IPs von 192.168.178.2 bis 192.168.178.20.

    Ist der lokale IP Bereich nicht immer 192.168.0.0 - 192.168.255.255? Allerdings hab' ich schon Router erlebt, die erst ab 192.168.1.1 anfangen zu zählen

  • Zitat

    Ist der lokale IP Bereich nicht immer 192.168.0.0 - 192.168.255.255? Allerdings hab' ich schon Router erlebt, die erst ab 192.168.1.1 anfangen zu zählen


    Nicht unbedingt... Es gibt diverse Adressenbereiche im IPv4 die exklusiv für lokale Netzwerke vorgesehen sind. Ich hab keine Firma mit mehr als 250 Einzelgeräten im Netzwerk, daher brauche ich nur einen relativ kleinen Adressbereich. Mein Router verwendet deswegen alle Adressen von 192.168.178.2 bis 192.168.178.255. 192.168.178.0 ist die Adresse des lokalen Netzwerks und 192.168.178.1 ist die lokale Adresse des Routers im Netzwerk.
    Es gibt aber auch sehr große Einrichtungen mit gigantischen lokalen Netzwerken, die den gesamten Bereich von 192.168.0.0 bis 192.168.255.255 benötigen. Es gibt sogar einen Bereich der noch größer ist (ein Oktett mehr).
    Außerdem habe ich ja vom Bereich gesprochen, den mein Router für fest vergebene Adressen verwendet. ;) Dieser umfasst 18 Adressen von 192.168.178.2 bis 192.168.178.20. Der Rest ist (fast komplett) für, automatisch per DHCP-Server verteilte, IP Adressen gedacht.