Nachricht senden, wenn IP-Adresse bekannt ist
Übersicht

ChristianKBetreff: Nachricht senden, wenn IP-Adresse bekannt ist |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Noch eine Frage zum Senden von Daten im INet:
Kann man direkt eine Nachricht zu einem anderen Spieler senden, ohne dass er vorher wie bei GNet zum Host ( also zum dem der die Nachricht versenden soll ) connected hat? Vielen Dank schonmal im Voraus. ![]() |
||
![]() |
stfighter01 |
![]() Antworten mit Zitat ![]() |
---|---|---|
nur wenn derjenige eine nachricht von dir erwartet.
also einen port öffen hält um eine verbindung auf deine anfrage hin zu erstellen. [edit] mach dich mal schlau und such nach: sockets, server-sockets tcp/ip u. upd protokoll. vielleicht hilft es zum allgemeinen verständnis noch ein wenig grundwissen über http zu besitzten. damit kannst du dir dann vielleicht einen reim darauf machen wie das internet generell arbeitet. |
||
Denken hilft! |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: also einen port öffen hält um eine verbindung auf deine anfrage hin zu erstellen.
Genau das ist mein Problem. Ich habe gehört, dass der Router und die Firewall Ports sperren, aber ich möchte, dass der Spieler das Programm auch benutzen kann, ohne Einstellungen in seinem Router vornehmen zu müssen. Ist das irgendwie möglich? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie gesagt... wenn ein PC hinter der Firewall auf eine Nachricht @ Port x wartet, dann wird die Firewall die Nachricht auch zu diesem PC durchlassen! Außer man sperrt das total! 0o
Guck dir mal an, wie Skype das macht ![]() Ist ne ganz interessante Geschichte! |
||
Twitter
Download Jewel Snake! Windows|Android |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay, noch etwas:
Wir haben einen Router, an dem 3 Rechner angeschlossen sind. Der Router hat dann z.B. die IP: 77.143.104.87 Alle Rechner, die an diesen Router angeschlossen sind, bekommen dann so eine IP: 192.168.178.x Wenn der Router also etwas aus dem Inet empfängt, schickt er es an eine der lokalen IPs. Angenommen, ich möchte den Rechner meines Bruders kontaktieren, woher weiß der Router, an wen er die Nachricht senden soll? Vom Inet aus gesehen hat ja der Router nur eine IP und die lokalen kann man ja außerhalb nicht verwenden. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja genau! Da kann man irgendwas am Router einstellen, glaub ich 0o
Mir fällt der Name aber net ein -.- |
||
Twitter
Download Jewel Snake! Windows|Android |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie machen das denn Online-Rollenspiele wie GuildWars oder Silkroad? Da braucht man ja am Router nichts einzustellen, das geht einfach so.
Ich bin grad ziemlich verzweifelt ![]() und bekomme einfach keine Verbindung zwischen 2 Internetrechnern. Hat jemand vielleicht ein kleines Beispielprogramm oder ein Tutorial dafür? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wenn du innerhalb des lokalen Netzwerkes kontakt aufnehmen willst musst du die lokale Netzwerk IP nehmen, du kannst nicht vom LAN ins INet und zurück aufs LAN bei den meisten Routern!
Wenn du vom netz was an ihn schicken willst: geht nur wenn er dir erst was geschickt hat, sonst gibts kein Forwarding ausser du hast DMZ oder static port forwarding eingerichtet. (oder natürlich einen dynamischen Trigger was bei neueren routern auch möglich ist, das ausgehend auf Port A einen eingehenden Port B temporär auf das System leitet) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
DMZ <---- Genau.. so heist das -.-
Die Spiele wie GW haben ja den Client! Der sendet dann an der Server, und dadurch bekommt der Server sozusagen die Erlaubnis zurückzuschicken! |
||
Twitter
Download Jewel Snake! Windows|Android |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke erstmal. ![]() Zitat: geht nur wenn er dir erst was geschickt hat
Aber wie denn, wenn es noch keine Verbindung gibt? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
tja einer muss den server machen, da wird der port automatisch zu dem system weitergeleitet. das heisst auch router einstellen für portforwarding.
UPNP kannst du weder nutzen (ohne winapi -> userlib) noch ist es in sicheren netzwerken überhaupt nutzbar weils ein massives sicherheitsproblem darstellt. Ansonsten brauchst du, wie dir oben ja schonma gesagt wurde, eine struktur wie skype mit einem masterserver wo beide hinconnecten, daten austauschen via TCP (also ip - port) und sich dann beide was an die "wand" schicken. wenn danach der andere dorthin schreibt glaub der router das es eine antwort is und es geht. So kommt skype durch die firewalls ^^ *google ma nach dem skype artikel wie es dort geht für die ganz genaue auflistung wie der gag funktioniert* |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab jetzt was zu Skype gefunden:
Zitat: Skype verzichtet nämlich darauf einen oder mehrere zentrale Server zwischenzuschalten, um die Daten- und Sprachinformationen zu übermitteln.
... Skype nutzt für die Kommunikation unter anderem den TCP-Port 80, der auch für das normale Surfen im Web verwendet wird. Dadurch funktioniert die Skype-Software auch hinter diversen Firewalls und NAT-Routern. Ich habe dazu mal Folgendes programmiert und mit "localhost" funktioniert das auch, nur nicht übers Internet. Server: Code: [AUSKLAPPEN] Framework brl.standardio
Import brl.socketstream Local server:TSocket = CreateTCPSocket( ) Print "Server gestartet: " + BindSocket( server, 80 ) SocketListen( server ) Local stream:TSocketStream Local accept:TSocket Local line:String While True accept = SocketAccept( server ) If accept <> Null stream = CreateSocketStream( accept, True ) If stream <> Null Print "Neue Verbindung ..." EndIf EndIf If stream <> Null While Not Eof( stream ) line = ReadLine( stream ) If line <> "" Print line Wend EndIf Wend Client: Code: [AUSKLAPPEN] Framework brl.standardio
Import brl.socketstream Local client:TSocket = CreateTCPSocket( ) Local stream:TSocketStream Local ip:String = Input( "IP des Hosts > " ) If ConnectSocket( client, HostIp( ip ), 80 ) Print "Verbunden ..." stream = CreateSocketStream( client, True ) If stream = Null Print "Stream konnte nicht erstellt werden ..." Input End EndIf WriteLine( stream, "Hallo, ich bin da!" ) EndIf Input Könnt ihr einen Fehler finden? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group