Schon wieder UDP Probleme
Übersicht

DarkbyteBetreff: Schon wieder UDP Probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Ich habe schon einmal hier gepostet wegen eines UDP Problems. den ersten Fehler habe ich behoben ich kann jetzt nachrichten senden. Aber ich kann sie irgendwie nicht anzeigen bzw. lesen. Ich habe ein kleines Programm geschrieben womit ich erkennen konnte ober der andere PC meinen Nachricht bekommt. dazu wird bei jedem Schleifendurchlauf eine 1 geschickt. es wird dann beim anderen überprüft ob etwas angekommen ist wenn nicht , also wenn das Postfach leer ist wird eine 0 angegeben und bei mir kommen nur Nullen keine einzige 1. entweder ich kann die Nachricht nicht empfangen oder nicht gescheit senden . Ich hoffe ihr könnt mir weiter helfen danke.
Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() Print "1 = 1." Print "2 = 2." Wahl = Input("Bitte Zahl eingeben: ") IP$ = Input$("IP: ") If Wahl = 1 Then sendeport = 8000 empfangsport = 8001 EndIf sendeport = 8001 empfangsport = 8000 sendes = CreateUDPStream(sendeport) empfangs = CreateUDPStream(empfangsport) Repeat ;Nachricht lesen If RecvUDPMsg(empfangs) Then Antwort = ReadShort(empfangs) EndIf Print Antwort ;Nachricht schreiben N = 1 WriteShort sendes, N SendUDPMsg sendes, IP(IP$), sendeport Until KeyHit(1) Function IP(IP$) A1 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A2 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A3 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A4 = Int(IP$) Return (A1 Shl 24) + (A2 Shl 16) + (A3 Shl 8 ) + A4 End Function |
||
- Zuletzt bearbeitet von Darkbyte am Di, Apr 03, 2007 10:34, insgesamt einmal bearbeitet
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If Wahl = 1 Then
sendeport = 8000 empfangsport = 8001 EndIf sendeport = 8001 empfangsport = 8000 es ist egal ob wahl=1 ist danach werden die variablen zurückgesetz? meinst du diesenCode: [AUSKLAPPEN] If Wahl = 1 Then
sendeport = 8000 empfangsport = 8001 else sendeport = 8001 empfangsport = 8000 endif |
||
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
stimmt danke daran habe ich nciht gedacht | ||
BlackTermi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, wieso machst du einen Sende- und einen Empfangsstream ? Ein Stream reicht. | ||
DarkbyteBetreff: ! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
komischer weise gehts immer noch nicht
Code: [AUSKLAPPEN] Graphics 640,480,16,2 SetBuffer BackBuffer() Print "1 = 1." Print "2 = 2." Wahl = Input("Bitte Zahl eingeben: ") IP$ = Input$("IP: ") If Wahl = 1 Then sendeport = 8000 empfangsport = 8001 Else sendeport = 8001 empfangsport = 8000 EndIf sendes = CreateUDPStream(sendeport) empfangs = CreateUDPStream(empfangsport) Repeat ;Nachricht lesen If RecvUDPMsg(empfangs) Then Antwort$ = ReadLine(empfangs) EndIf Print Antwort$ ;Nachricht schreiben N$ = Input$("Nachricht: ") WriteLine sendes, N$ SendUDPMsg sendes, IP(IP$), sendeport Until KeyHit(1) Function IP(IP$) A1 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A2 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A3 = Int(Left(IP$,Instr(IP$,".")-1)) : IP$ = Right(IP$,Len(IP$)-Instr(IP$,".")) A4 = Int(IP$) Return (A1 Shl 24) + (A2 Shl 16) + (A3 Shl 8 ) + A4 End Function Könntet ihr bitte euch das nochmal anschauen? |
||
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
komischer weise wenn ich mit menem Bruder hier im Haus das ganze über Lan mache ghet es aber wenn ich mit Eingeproggt (Österreich) das versuchen möchte geht es nicht warum? | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
weil du über internet kein UDP nutzen kannst sofern er kein portforwarding aktiv hat für den port den du gerne nutzen würdest. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Was muss ich da machen? Liegt das an mir oder an Ihm? | ||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
an beiden sofern in beide richtungen was geschickt werden muss.
Was du machen musst ist den router entsprechend einstellen zumindest auf der server seite zu welcher der kontakt aufgebaut wird. dort müssen die UDP nachrichten zum server system weitergeleitet werden. Ansonsten musst du tricks wie skype nutzen um löcher in die firewall zu schiessen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Server? Ich benutze doch Prots.
Was könnte ich noch benutzen? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Garnichts
Ports müssen auch durch eine Firewall also müssen entweder beide die entsprechenden Ports weiterleiten oder du machst einen Server so das nur einer öffnen muss. Aber ich denke du solltest dich erst in das thema einlesen, denn die Aussage mit Server und "ich nutze doch Ports" legt die Vermutung nahe, dass du keine oder kaum Ahnung hast ... |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tut mir Leid aber ich verstehe immer noch nicht ganz was du meinst ![]() ![]() |
||
- Zuletzt bearbeitet von Darkbyte am Di, Apr 03, 2007 10:32, insgesamt einmal bearbeitet
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man Port und Server nicht unterscheiden kann, wirds dann langsam schon peinlich.
Ein Port ist ein "Tor", durch welches die UDP-Daten gesendet werden. Die empfängt ein Hauptcomputer namens Server, den du dir kaufen musst. Es braucht einen mit Rootzugriff! Was Dreamora sagen will ist, dass deine Firewall den Port blockiert. oder so ähnlich. Du musst jetzt den Server so einstellen, dass der nur einen Port öffnet, nicht zwei. K.A. wie das geht. ôo |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der ausgehende Port des Servers muss nicht frei sein, nur dein einkommende. Denn raus kannst du immer senden (ausser der Router / die Firewall steht auf Security Stufe 3, dann geht nur noch Port 80 und fertig)
Einen Server muss man sich auch nicht kaufen, also eine extra Maschine. Es reicht aus wenn man den Code für den Server schreibt also für ein Programm das die "Multiplayer Spielleitung" übernimmt (das muss man sowieso denn wenn 2 zusammen spielen können nicht beide bestimmen, da sonst die Welt sofort inkonsistent wird zwischen den zwei Spielern. Auch muss jemand die tatsächlichen Daten halten um sie an alle anderen Spieler zu ghosten *will heissen dublikate der Daten versenden und diese aktuell halten*. Von daher sind die Wunschträume einiger hier mit "ich mache singleplayer und füge dann rasch noch Multiplayer hinzu" komplett unrealistisch und werden sie noch an den Rand ihres Verstandes treiben. Wenn der Code nicht von Anfang an drauf ausgelegt war kommt ein Multiplayermodus schier einem zweiten Spiel gleich) Wer jedoch nicht einmal weiss was ein Port ist und was ein Server ist etc sollte Multiplayer Code Implementation erst einmal lassen und sich erst mit der Materie selbst auseinander setzen. (ebenfalls sollte das tun wer meint DirectPlay tauge für mehr als ein Chatprogramm, denn das tut es unter Garantie nicht. Microsoft hat es nicht schon vor Ewigkeiten aus der aktuellen DX Version rausgeschleudert, denn das Protokoll taugt in keinster Weise für Echtzeit Multiplayer und was das Ding noch übler macht ist das DirectPlay nicht 1 Port braucht sondern eine ganze Port Range von mehreren hundert, wie eigentlich jede Microsoft Software *zb MSN Messenger*) |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eigentlich weiß ich schon was ein Port und ein Server ist. Aber in meinem Buch ist das so beschrieben mit dem Multiplayerspielen. Ich muss 2 Ports angeben (diese Bauen eine Verbindung zum jeweils anderen PC auf ) (da steht nirgends etwas über einen Server! Auch bei der Onlinehilfe steht nichts über einen Server) Ich habe meine Sicherheitstufe schon lange auf 0 gesetzt weil sonst bei mir icq nicht funktioniert. Außerdem fragt mich jedes mal die Firewall ob das Programm durchgelassen werden soll. (Natürlich stimme ich zu) Dann kann es ja nur an der Firewall von eingeproggt liegen. (Ist das mit Server nicht eigentlich TCP und nicht UDP? denn UDP arbeitet ja nur mit Ports)
Kann ich Port 80 eigentlich auch nehmen? |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh man!
Also.... Port 80 ist für den Internet-Explorer und so reserviert! Wenn du den nehmen würdest, und gleichzeitig auf google.de oder so wärst, würde dein Programm abschmieren, weil der port schon belegt ist. Ich empfehle dir, mal bei wikipedia "server" einzugeben. ![]() |
||
Twitter
Download Jewel Snake! Windows|Android |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Stimmt nicht. Der Browser braucht selten selber Port 80, er sendet jedoch an Port 80, weil der Server an diesem Port die Nachrichten erwartet.
Genau das ist ja auch das Problem mit Routern; wenn dein Programm eine Nachricht an den PC deines Kumpels schickt (sagen wir mal, auf Port 1000), ist da noch sein Router dazwischen - und der kann mit Nachrichten, die auf Port 1000 von einer ihm unbekannten Adresse kommen, wenig anfangen und blockt sie ab, weil er sie nicht erwartet. Deshalb muss man beim Router diesen Port forwarden, damit Nachrichten, die beim Router auf Port 1000 ankommen, zum PC, der dahinterliegt, weitergeleitet werden. Wenn du zum Senden und Empfangen den gleichen Stream benutzt, muss der Benutzer, der dem Spiel beitritt, bei sich keine Ports forwarden und im Normalfall auch keine Sonderregeln bei der Firewall einstellen. Denn: Wenn du deinem Kumpel eine Nachricht auf Port 1000 schickst, wissen Firewall und Router nun, dass du eine Verbindung mit ihm an diesem Port erstellt hast und blocken dann Nachrichten, die von dort zurückkommen, nicht mehr. MfG |
||
- Zuletzt bearbeitet von Holzchopf am Di, Apr 03, 2007 12:42, insgesamt einmal bearbeitet
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
shit. doppelpost | ||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und wie schreibe ich sowas damit ich nur einen Prot brauche ? (Code wäre gut)(Code zu meinem Programm noch besser^^) | ||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
einfach genau so, nur mit einem port!
Der kann dann empfangen, und senden xD |
||
Twitter
Download Jewel Snake! Windows|Android |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group