Server und Client auf dem gleichen Computer
ja der client stellt eine verbindung zum server her und dann sendet der server zb. eine datei zu dem angegebenen client (clientEvent() oder so)
Wenn dass mit ClientEvent beim Server nicht geht sag ich euch nochma bescheid.
Achso bei 127.0.0.1 vermute ich dass die verbindung garnicht erst aus dem Computer heraus geht sondernim computer bleibt und nur so außsieht als geht die raus. Vermute ich aber nur.
Wenn dass mit ClientEvent beim Server nicht geht sag ich euch nochma bescheid.
Achso bei 127.0.0.1 vermute ich dass die verbindung garnicht erst aus dem Computer heraus geht sondernim computer bleibt und nur so außsieht als geht die raus. Vermute ich aber nur.
- Tafkadasom2k5
- Beiträge: 1578
- Registriert: 13.08.2005 14:31
- Kontaktdaten:
127.0.0.1 ist die sogenannte "Loopback-Adresse". Alle Netzwerkkarten sind so genormt, dass sie bei Angabe dieser IP "zu sich selber" zurückrouten, also daran kann es nicht liegen. Ich habe schließlich auch schon mehrere Sachen ausprobiert (u.A. Shoutcast-Winamp Streaming und da musste ich auch dem Winamp-Plug-In sagen, dass der Streamserver auf demselben Rechner läuft.
Also an den Networkbefehlen kanns nicht wirklich liegen, ad das alles hardwareintern läuft, und somit für das Programm an sich nicht weiter "andersartig" ist als ein Programm das wirklich nach Außen sendet.
Aber damit andere Leute connecten können, muss der Port geforwarded sein. Das geht i.d.R. mit dem Webinterface des Routers.
Warum das mit ICQ geht kann ich dir recht einfach erklären:
In dem Fall versucht nämlich der ICQ-Client den ICQ-Server zu kontaktieren. (Die Erklärung von NTQ war übrigends ziemlich gut mit den Viren
)
Der Router registriert das in seiner internen Tabelle, dass ICQ auf Port sowieso mit IP sowieso mit dem Server verbunden werden möchte und speichert das. Wenn der Server jetzt antwortet, guckt der Router vorher nach, wer geantwortet hat-
"AH, der ICQ- Server- der PC 192.168.1.4 wollte doch gerade was von dem... mh, OK, Port sowieso, da hatte der CLient auch drauf angefragt- ist genehmigt, gebe ich weiter.."
Kommt jetzt aber ein Hacker o.Ä., der versucht sich mit irgendeinem Port deines Rechners zu verbinden, ohne das ein Client die Anfrage gesendet hat, so weiß der Router nicht, an welchen PC im Netzwerk er das Paket schicken soll. (Aneinem Router sind ja meistens mehrere gleichzeitig) Also verwirft er das Paket- sogesehen ist das also garkein gewolltes Feature, sondern eine technische Unmöglichkeit (It's not a bug- it's a feature!).
Sagst du deinem Router jetzt im Webinterface, dass du port 987 forwarden willst, dann musst du einmal den Port einstellen, und die lokale IP, an den das Paket gesendet werden soll. Wenn jetzt ein Client von Außen versucht auf deinen PC zu connecten, so guckt der Router nicht mehr in seine Tabelle, sondern schickt es lediglich stumpf an die Angaben, die du hinterlegt hast.
Nachteil: Hast du 2 PCs am gleichen Router, und willst 2 mal den GLeichen Server starten, so musst du 2 verschiedene Ports für die jeweiligen PCs angeben, weil du kannst ja immer nur eine IP pro Port angeben, an die der Router seine Empfangsdaten senden soll- logisch, oder?
Ich hoffe ich habe fürs Erste zur einem kleinen "Ah"-Gefühl beigetragen, und damit eurer Logik auf die Sprünge geholfen
Was das Port-Forwarden per Automatik angeht: Das geht! Es gibt ein Protokoll, über das die Einstellungen von einem PC zum ROuter übertragen werden können. Das ist aber in den meisten Routern deaktiviert, da ja sonst auch Viren diesen Befehl einfach senden könnten, um den PC angreifbar von außen zu machen. Außerdem gab(gibt?!) es ist in diesem Dienst schon immer leichte Tricks um Sperrmechanismen zu umgehen- also ist dieser Ansatz eher unpraktikabel..
Gr33tz
Tafkadasomk5
Edit: Und jetzt fällt mir gerade der Name für das "Router-Einstell"- Protokoll ein: UPnP (Universal Plug'n'Play)
Azureus unterstützt das zum Beispiel um Torrent-Nutzern das Konfigurieren zu vereinfachen, da auch 2 Ports geforwarded werden müssen, um "full speed" erreichen zu können.
Also an den Networkbefehlen kanns nicht wirklich liegen, ad das alles hardwareintern läuft, und somit für das Programm an sich nicht weiter "andersartig" ist als ein Programm das wirklich nach Außen sendet.
Aber damit andere Leute connecten können, muss der Port geforwarded sein. Das geht i.d.R. mit dem Webinterface des Routers.
Warum das mit ICQ geht kann ich dir recht einfach erklären:
In dem Fall versucht nämlich der ICQ-Client den ICQ-Server zu kontaktieren. (Die Erklärung von NTQ war übrigends ziemlich gut mit den Viren

Der Router registriert das in seiner internen Tabelle, dass ICQ auf Port sowieso mit IP sowieso mit dem Server verbunden werden möchte und speichert das. Wenn der Server jetzt antwortet, guckt der Router vorher nach, wer geantwortet hat-
"AH, der ICQ- Server- der PC 192.168.1.4 wollte doch gerade was von dem... mh, OK, Port sowieso, da hatte der CLient auch drauf angefragt- ist genehmigt, gebe ich weiter.."
Kommt jetzt aber ein Hacker o.Ä., der versucht sich mit irgendeinem Port deines Rechners zu verbinden, ohne das ein Client die Anfrage gesendet hat, so weiß der Router nicht, an welchen PC im Netzwerk er das Paket schicken soll. (Aneinem Router sind ja meistens mehrere gleichzeitig) Also verwirft er das Paket- sogesehen ist das also garkein gewolltes Feature, sondern eine technische Unmöglichkeit (It's not a bug- it's a feature!).
Sagst du deinem Router jetzt im Webinterface, dass du port 987 forwarden willst, dann musst du einmal den Port einstellen, und die lokale IP, an den das Paket gesendet werden soll. Wenn jetzt ein Client von Außen versucht auf deinen PC zu connecten, so guckt der Router nicht mehr in seine Tabelle, sondern schickt es lediglich stumpf an die Angaben, die du hinterlegt hast.
Nachteil: Hast du 2 PCs am gleichen Router, und willst 2 mal den GLeichen Server starten, so musst du 2 verschiedene Ports für die jeweiligen PCs angeben, weil du kannst ja immer nur eine IP pro Port angeben, an die der Router seine Empfangsdaten senden soll- logisch, oder?
Ich hoffe ich habe fürs Erste zur einem kleinen "Ah"-Gefühl beigetragen, und damit eurer Logik auf die Sprünge geholfen

Was das Port-Forwarden per Automatik angeht: Das geht! Es gibt ein Protokoll, über das die Einstellungen von einem PC zum ROuter übertragen werden können. Das ist aber in den meisten Routern deaktiviert, da ja sonst auch Viren diesen Befehl einfach senden könnten, um den PC angreifbar von außen zu machen. Außerdem gab(gibt?!) es ist in diesem Dienst schon immer leichte Tricks um Sperrmechanismen zu umgehen- also ist dieser Ansatz eher unpraktikabel..
Gr33tz
Tafkadasomk5

Edit: Und jetzt fällt mir gerade der Name für das "Router-Einstell"- Protokoll ein: UPnP (Universal Plug'n'Play)
Azureus unterstützt das zum Beispiel um Torrent-Nutzern das Konfigurieren zu vereinfachen, da auch 2 Ports geforwarded werden müssen, um "full speed" erreichen zu können.
OpenNetworkConnection() hat geschrieben:Versucht eine Verbindung mit dem angegebenen Server aufzubauen. 'ServerName$' kann eine IP-Adresse oder ein voller Name sein (z.B.: "127.0.0.1" oder "ftp.home.net").
php-freak hat geschrieben:Ich hab die IP von google auch ned rausgefunden!
Tafkadasom2k5 hat geschrieben: Warum das mit ICQ geht kann ich dir recht einfach erklären:
In dem Fall versucht nämlich der ICQ-Client den ICQ-Server zu kontaktieren. (Die Erklärung von NTQ war übrigends ziemlich gut mit den Viren)
Der Router registriert das in seiner internen Tabelle, dass ICQ auf Port sowieso mit IP sowieso mit dem Server verbunden werden möchte und speichert das. Wenn der Server jetzt antwortet, guckt der Router vorher nach, wer geantwortet hat-
"AH, der ICQ- Server- der PC 192.168.1.4 wollte doch gerade was von dem... mh, OK, Port sowieso, da hatte der CLient auch drauf angefragt- ist genehmigt, gebe ich weiter.."
Genau und die Idee mit dem Server hatte ich auch bevor ich wusste das das ICQ auch so macht. Ich probiers mal aus und infomier euch wieder rechtzeitig ob klappt oder nicht.
Jetzt muss ich nur noch warten bis der eine Typ mir die Daten für den Server gibt und mir das freischaltet, der brauch lang! Und das programmieren
HI,
Also ich hab mal was ansprobiert, ein Programm Sendet einen string an einen anderen computer, der Computer Sendet wieder einen string zurück und bei mir kommt ein Textmeldung nur das klappt nicht.
Programm auf meinem Computer dass den string Versendet:
Programm auf dem Computer der den string empfängt und eien string an mich weider zurücksendet:
Ich habe gedacht mein Router lässt den String durch wenn ich kurz vorher schon eine anfrage dem Computer geschickt habe, oder ich hab was Falsch Programmiert.
Also ich hab mal was ansprobiert, ein Programm Sendet einen string an einen anderen computer, der Computer Sendet wieder einen string zurück und bei mir kommt ein Textmeldung nur das klappt nicht.
Programm auf meinem Computer dass den string Versendet:
Code: Alles auswählen
;---------Vorbereiten Init, Alocate, start usw.---------------
Port = 6832
If InitNetwork() = 0
MessageBox_(Win,"Netzwerk Umgebung kann nicht vorbreitet werden!"+Chr(13)+"Ist dein Computer Internet Tauglich?","Warnung",#MB_OK | #MB_ICONERROR)
End
EndIf
;-------------Endlosschleife, bis was passiert-----------------------
If CreateNetworkServer(1, Port , #PB_Network_TCP)
ConnectionID = OpenNetworkConnection("84.89.30.24", Port, #PB_Network_TCP)
If ConnectionID
SendNetworkString(ConnectionID, "Hi")
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
;-------------case 1,2,3,4---------------------------------------
Case 1
;MessageRequester("Server", "Ja er hat sich gemeldet", 0)
Case 2
MessageRequester("Server", "Ja er hat sich gemeldet", 0)
Case 3
DateiName$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", StandardFile$, Pattern$, Pattern)
If DateiName$
ReceiveNetworkFile(ClientID, DateiName$)
EndIf
Case 4
MessageRequester("Server", "Die verbindung zum Client wurde getrennt!", 0)
EndSelect
EndIf
Until Quit = 1
MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
CloseNetworkServer(0)
Else
MessageRequester("Error", "Can't create the server (port in use ?).", 0)
EndIf
EndIf
End
Programm auf dem Computer der den string empfängt und eien string an mich weider zurücksendet:
Code: Alles auswählen
Port = 6832
If InitNetwork() = 0
MessageBox_(Win,"Netzwerk Umgebung kann nicht vorbreitet werden!"+Chr(13)+"Ist dein Computer Internet Tauglich?","Warnung",#MB_OK | #MB_ICONERROR)
End
EndIf
;-------------Endlosschleife, bis was passiert-----------------------
If CreateNetworkServer(1, Port , #PB_Network_TCP)
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
;-------------case 1,2,3,4---------------------------------------
Case 1
MessageRequester("Server", "Ein neuer Client meldet sich!", 0)
Case 2
SendNetworkString(ClientID, "wiso")
Case 3
DateiName$ = SaveFileRequester("Bitte Datei zum Speichern auswählen", StandardFile$, Pattern$, Pattern)
If DateiName$
ReceiveNetworkFile(ClientID, DateiName$)
EndIf
Case 4
MessageRequester("Server", "Die verbindung zum Client wurde getrennt!", 0)
EndSelect
EndIf
Until Quit = 1
MessageRequester("PureBasic - Server", "Click to quit the server.", 0)
CloseNetworkServer(0)
EndIf
End
Ich habe gedacht mein Router lässt den String durch wenn ich kurz vorher schon eine anfrage dem Computer geschickt habe, oder ich hab was Falsch Programmiert.
das ist gut möglich, das dein router das durchlässt was dann zurückkommt. die frage ist jedoch, ob die anfrage selbst durch den potentiellen router des anderen computers durchkommt, und überhaupt bearbeitet wird.Ich habe gedacht mein Router lässt den String durch wenn ich kurz vorher schon eine anfrage dem Computer geschickt habe, oder ich hab was Falsch Programmiert.
falls du feind meinst, dann lässt dieser es vermutlich nicht durch...Joel hat geschrieben:...dann hab ichs mit meinem freind probiert

wie gesagt mit loop-back ist es sowieso wieder was ganz anderes.
weiß jemand ob der loop-back überhaupt ins LAN geht, oder ob er sich nur innerhalb der netzwerkhardware des rechners abspielt?
@joel
sag doch endlich mal, was du selbst für einen router hast (bitte genaue angaben)
!!!!!!!!!!!!!#NULL hat geschrieben:@joel
sag doch endlich mal, was du selbst für einen router hast (bitte genaue angaben)
und diesen link, den ich jetzt schon zum 3. mal poste, hast du dir vermutlich auch noch nich angeschaut.
