Problem mit UDP
Übersicht

![]() |
The YetiBetreff: Problem mit UDP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dieser Code hier steht vor dem Beginn meiner Haupt(spiel)schleife.
Zuvor wurde die Variable "online" durch den Spieler auf 0 (oflline), 1 (hosten) oder 2 (joinen) gesetzt. Dieses Codestück sollte eigentlich die Streams erstellen (funktioniert) und auf dem HostPC soll das Bild "warte" gezeigt werden, bis der andere Rechner ihm eine Nachricht schickt. Die Funtion INT_IP hab ich aus der Onlinehilfe (sie soll IP´s aus der xxx.xx.xxx.xx Form in eine Integer umwandeln). Im Moment sieht der Effekt des ganzen aber so aus, dass das Wartebild nicht weggeht (die Message nicht ankommt?). Vielleicht könnt ihr mir ja helfen: Code: [AUSKLAPPEN] If online=1
senden=CreateUDPStream() empfang=CreateUDPStream(8000) Cls DrawBlock warte,0,0 Flip Repeat joined=RecvUDPMsg(empfang) If KeyHit(1) online=0 Exit EndIf If joined<>0 ip=joined Exit EndIf Forever EndIf If online=2 Color 255,255,255 dotip$=Input("IP des Hosts: ") ip=INT_IP(dotip$) Color 0,0,0 senden=CreateUDPStream() empfang=CreateUDPStream(8000) WriteLine(senden,"los") SendUDPMsg senden, ip, 8000 EndIf Function INT_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 Thx, im Vorraus PS: Falls ihr keinen Fehler seht, sagt´s bitte auch, dann mus ich ihn wo anders suchen ![]() |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
So wie ich das sehe zeichnest du das Bild ja auch immer, egal was passiert. Ausserdem hast du ne Schleife die sich immer wiederholt. Du setzt wenn man ESC drückt online auf 0, aber die Schleife wird dennoch nicht abgebrochen wenn online 0 ist. Wie beendest du das Programm eigentlich? Oder dann hab ich etwas übersehen.
Eigentlich brauchst du auch nur 1 Stream, nicht 2. Da man über den Stream sowohl Empfangen als auch senden kann. Ich kann dir ja mal ein Beispiel machen und es nachher posten. |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
So sollte es funktionieren:
Da du aber danach wohl weitermachen willst solltest du statt das Programm zu beenden ne Weitere Schleife einbauen oder die erste Schleife abändern. Code: [AUSKLAPPEN] Graphics 1024,768,0,1 SetBuffer BackBuffer() online = Input("Host(1),Joint(2): ") If online = 1 udp = CreateUDPStream(8000) If udp = 0 Then End Color 255,255,0 Repeat Cls Text 512, 384,"Bitte warten...",1,1 ip = RecvUDPMsg(udp) If ip <> 0 message = ReadByte(udp) Select message Case 1 joined = True name$ = ReadString$(udp) Default End Select EndIf Flip Until joined = True Or KeyHit(1) End ElseIf online = 2 udp = CreateUDPStream() If udp = 0 Then End dotip$ = Input("IP: ") WriteByte(udp,1) ;Joine message WriteString(udp,"Jolinah") ;Name SendUDPMsg udp, INT_IP(dotip$), 8000 End EndIf Function INT_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 |
||
![]() |
The Yeti |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also die Schleife müsste eigentlich schon durchbrochen werden, da ich einCode: [AUSKLAPPEN] Exit da stehen habe? Ich guck mir aber trozdem mal deine Version an.
|
||
denial |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi...
also ich hab auch Probleme mit UDP, hab aber deinen Code, Jolinah ausprobiert, und es hat geklappt.... Hab n Chat gecodet, bei dem Der Client dem Host MSGs schicken kann. Allerdings weiß ich nicht, wie ich es hinkrieg, dass der Host dem Client etwas schicken kann, weil da irgendwie nichts passiert... Hab als Destination_IP die IP angegeben, die RecvUDPMsg als Rückgabe liefert.. Oder brauch ich einen zweiten UDP Stream? Normalerweise nicht, oder? Danke |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte öfter das Problem das die IP die RecvUDPMsg zurückgeliefert hatte nicht funktioniert hat. Es gibt noch eine andere Funktion die die IP der aktuell gesendeten Message zurückgibt. Und mit der ist es bei mir bis jetzt immer gegangen:
Code: [AUSKLAPPEN] UdpMsgIP() UdpMsgPort() Damit bekommst du IP und Port. |
||
denial |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke geht ![]() Und danke auch an den Thread-Ersteller, durch den dieser Code erstmal zu Tage gekommen ist ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group