UDP_Client geht nicht weis nicht Warum
Übersicht

xXThunderXxBetreff: UDP_Client geht nicht weis nicht Warum |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo Leute hab mal experimentiert mit UDP wollte eig nen Client uns Server Schreiben jedoch tauchen beim Client porb auf und zwar wird mein empfangs_stream nicht er kannt. Ich weis aber nicht warum hab eigentlich alles Global und denke mal auch richtig gemacht hoffe ich zumindest.
Naja hir ist der code: Client: Code: [AUSKLAPPEN] AppTitle "Client"
Graphics 800,600,16,2 SetBuffer BackBuffer() timer = CreateTimer(90) Type gegner Field x,y,ip,leben End Type host_ip$ = Input("Gebe bitte die IP des Host ein: ") host_ip_server = integer_ip(host_ip$) Global empfang_port = 9000 Global sende_port = 9010 Global mouse_x, mouse_y Global empfangs_stream = CreateUDPStream(empfang_port) Print empfangs_stream Global sende_stream = CreateUDPStream(sende_port) Print sende_stream Repeat mouse_x = MouseX() mouse_y = MouseY() Rect mouse_x,mouse_y,50,50 empfangen() senden() For gegner.gegner = Each gegner Rect gegner\x,gegner\y,50,50 Print "Gegner-x: " + gegner\x + "/Gegner-y: " + gegner\y + "/Leben: " + gegner\leben Next Flip(0) : Cls WaitTimer(timer) Until KeyHit(1) Function empfangen() Repeat nachricht = RecvUDPMsg(empfangs_stream) If nachricht <> 0 Then While Not Eof(empfangs_stream) ; bis kein packet mehr im Post fach ist ip = ReadInt(empfangs_stream) vorhanden = 0 For gegner.gegner = Each gegner If gegner\ip = ip Then vorhande = 1 : Exit Next If vorhanden = 0 Then gegner.gegner = New gegner gegner\ip = ip EndIf Select ReadByte (empfangs_stream) Case 1 gegner\x = ReadInt(empfangs_stream) gegner\y = ReadInt(empfangs_stream) gegner\leben = ReadInt(empfangs_stream) End Select Wend EndIf Until nachricht = 0 End Function Function senden() WriteByte sende_stream,1 WriteInt sende_stream,mouse_X WriteInt sende_stream,mouse_y ;WriteInt sende_stream,gegner\leben ;WriteInt sende_stream, SendUDPMsg sende_stream,host_ip_server,sende End Function Function integer_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 Hir mien Server: Code: [AUSKLAPPEN] AppTitle "Server"
Graphics 500,200,16,2 SetBuffer BackBuffer() timer = CreateTimer(90) Type gegner Field x,y,ip,leben End Type Type client Field ip End Type empfang_port = 9010 sende_port = 9000 empfangs_stream = CreateUDPStream(empfang_port) sende_stream = CreateUDPStream(sende_port) Repeat Repeat nachricht = RecvUDPMsg(empfangs_stream) If nachricht <> 0 Then For client.client = Each client If client\ip = nachricht Then vorhande = 1 :Exit Next If vorhanden = 0 Then client.client = New client client\ip = nachricht gegner.gegner = New gegner gegner\ip = nachricht EndIf For gegner.gegner = Each gegner If gegner\ip = nachricht Then Exit Next While Not Eof(empfangs_stream) Select ReadByte(empfangs_stream) Case 1 gegner\x = ReadInt(empfags_stream) gegner\y = ReadInt(empfangs_stream) gegner\leben = ReadInt(empfangs_stream) End Select Wend EndIf Until nachricht = 0 For client.client = Each client For gegner.gegner = Each gegner If client\ip <> gegner\ip Then WriteInt sende_stream,client\ip WriteByte sende_stream,1 WriteInt sende_stream,gegner\x WriteInt sende_stream,gegner\y WriteInt sende_stream,gegner\leben SendUDPMsg sende_stream,client\ip,sende EndIf Next Next For client.client = Each client Print "Client: " + client\ip + " ist verbunden" Next Flip(0):Cls WaitTimer(timer) Until KeyHit(1) |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
http://blitzbasic.com/codearcs...?code=2261 Es braucht immer nur einen Stream für lesen und schreiben! Forensuche benutzen! MFG |
||
xXThunderXx |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab noch mal ne Frage wenn ich mit WirteIn Daten in den stream schreibe halt zum versenden muss ich die diese dann auch wieder in der Reihenfolge wie ich sie reingalden habe wieder auslese oder ist das egal wierum ich sie auslese. | ||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst nicht ![]() Aber es wäre sicherlich sinnvoll. Wenn du in den Stream 2 Ints schreibst Zitat: WriteInt(stream,Int1) WriteInt(stream,Int2) SendUDPMsg ..... Dann wird der Erste, der in den Stream geschrieben wurde, auch als erstes ausgelesen: Zitat: Int1=ReadInt(stream) Int2=ReadInt(stream) |
||
Twitter
Download Jewel Snake! Windows|Android |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group