UDP_Server sendet nichts
Übersicht BlitzBasic Beginners-Corner
xXThunderXxBetreff: UDP_Server sendet nichts |
Mo, Apr 13, 2009 16:18 Antworten mit Zitat |
|
---|---|---|
Hallo zusammen,
Ich habe folgendes Problem. Die Clients holen sich von dem Server Medipackdaten die sie dann auswerten jedoch Sendet bzw. wird nichts empfangen. Woran könnte das liegen. Senden(Server) [ein Teil davon] Beim Sender hinzugefügt (Irgent wo dor muss da Problem liegen) WriteInt udp_stream,medipack_x WriteInt udp_stream,medipack_y WriteInt udp_stream,medi(0)\aktiv Code: [AUSKLAPPEN] ;senden
For client.client = Each client For bomber.bomber = Each bomber bomber.bomber = First bomber If client\ip <> bomber\ip Then WriteInt udp_stream,client\ip WriteByte udp_stream,1 WriteInt udp_stream,bomber\x WriteInt udp_stream,bomber\y WriteInt udp_stream,bomber\char_frame_alg For i =0 To 9 WriteInt udp_stream,bomben_norm_gegner(i)\aktiv WriteInt udp_stream,bomben_norm_gegner(i)\x WriteInt udp_stream,bomben_norm_gegner(i)\y WriteInt udp_stream,bomben_norm_gegner(i)\explosion_lauft Next WriteInt udp_stream,bomber\schaden WriteInt udp_stream,medipack_x WriteInt udp_stream,medipack_y WriteInt udp_stream,medi(0)\aktiv SendUDPMsg udp_stream,client\ip,8010 EndIf Empfänger(Client) Code: [AUSKLAPPEN] Function empfangen()
Repeat nachricht = RecvUDPMsg(udp_stream) If nachricht <> 0 Then While Not Eof(udp_stream) ip = ReadInt(udp_stream) vorhanden = 0 For bomber.bomber = Each bomber If bomber\ip = ip Then vorhanden = 1 : Exit Next If vorhanden = 0 Then bomber.bomber = New bomber bomber\ip = ip EndIf Select ReadByte(udp_stream) Case 1 bomber\x = ReadInt(udp_stream) bomber\y = ReadInt(udp_stream) bomber\char_frame_alg = ReadInt(udp_stream) For i = 0 To 9 bomben_norm_gegner(i)\aktiv = ReadInt(udp_stream) bomben_norm_gegner(i)\x = ReadInt(udp_stream) bomben_norm_gegner(i)\y = ReadInt(udp_stream) bomben_norm_gegner(i)\explosion_lauft = ReadInt(udp_stream) Next eigen_schaden = ReadInt(udp_stream) medipack_x = ReadInt(udp_stream) medipack_y = ReadInt(udp_stream) medi(0)\aktiv = ReadInt(udp_stream) End Select Wend EndIf Until nachricht = 0 End Function beim Empfänger hinzugefügt (Irgent wo dor muss da Problem liegen) medipack_x = ReadInt(udp_stream) medipack_y = ReadInt(udp_stream) medi(0)\aktiv = ReadInt(udp_stream) Kompletter Server Code Code: [AUSKLAPPEN] AppTitle "Server"
SetBuffer BackBuffer() timer = CreateTimer(24) SeedRnd MilliSecs() Global start = MilliSecs Global jetzt Global mein_port = 8000 Global udp_stream= CreateUDPStream(mein_port) Global medipack_x Global medipack_y Type client Field ip End Type Type bomber Field x Field y Field ip Field char_frame_alg Field schaden End Type Type bombe_norm_gegner Field x Field y Field aktiv Field explosion_lauft End Type Dim bomben_norm_gegner.bombe_norm_gegner(20) For i = 0 To 20 bomben_norm_gegner(i) = New bombe_norm_gegner Next Type medipack Field zeit Field aktiv Field aktiv_hinweis End Type Dim medi.medipack(1) For i = 0 To 1 medi(i) = New medipack medi(i)\zeit = 30001 medi(i)\aktiv = 0 medi(i)\aktiv_hinweis = 1 Next Repeat jetzt = MilliSecs() ;Medipack If medi(0)\zeit >= 30000 Then standpunkt= Rand (1,5) Select standpunkt Case 1 medipack_x = 324 medipack_y = 240 Case 2 medipack_x = 32 medipack_y = 32 Case 3 medipack_x = 608 medipack_y = 32 Case 4 medipack_x = 608 medipack_y = 452 Case 5 medipack_x = 32 medipack_y = 452 End Select ;medipack() start = jetzt medi(0)\aktiv = 1 EndIf If medi(0)\aktiv_hinweis = 2 Then medi(0)\aktiv = 0 Print "Hinweis: "+ medi(0)\aktiv_hinweis ;empfangen Repeat nachricht = RecvUDPMsg(udp_stream) If nachricht <> 0 Then ;ob es den client gibt vorhanden = 0 For client.client = Each client If client\ip = nachricht Then vorhanden = 1 : Exit Next If vorhanden = 0 Then client.client = New client client\ip = nachricht bomber.bomber = New bomber bomber\ip = nachricht EndIf For bomber.bomber = Each bomber If bomber\ip = nachricht Then Exit Next While Not Eof(udp_stream) Select ReadByte(udp_stream) Case 1 bomber\x = ReadInt(udp_stream) bomber\y = ReadInt(udp_stream) bomber\char_frame_alg = ReadInt(udp_stream) For bomber.bomber = Each bomber bomber.bomber = First bomber If client\ip = bomber\ip Then For i = 0 To 9 bomben_norm_gegner(i)\aktiv = ReadInt(udp_stream) bomben_norm_gegner(i)\x = ReadInt(udp_stream) bomben_norm_gegner(i)\y = ReadInt(udp_stream) bomben_norm_gegner(i)\explosion_lauft =ReadInt(udp_stream) Next bomber\schaden = ReadInt(udp_stream) EndIf bomber.bomber = Last bomber If client\ip = bomber\ip Then For i = 10 To 19 bomben_norm_gegner(i)\aktiv = ReadInt(udp_stream) bomben_norm_gegner(i)\x = ReadInt(udp_stream) bomben_norm_gegner(i)\y = ReadInt(udp_stream) bomben_norm_gegner(i)\explosion_lauft = ReadInt(udp_stream) Next bomber\schaden = ReadInt(udp_stream) EndIf bullshit = ReadInt(udp_stream) If bullshit = 2 Then medi(0)\aktiv_hinweis = bullshit EndIf Next End Select Wend EndIf Until nachricht = 0 ;senden For client.client = Each client For bomber.bomber = Each bomber bomber.bomber = First bomber If client\ip <> bomber\ip Then WriteInt udp_stream,client\ip WriteByte udp_stream,1 WriteInt udp_stream,bomber\x WriteInt udp_stream,bomber\y WriteInt udp_stream,bomber\char_frame_alg For i =0 To 9 WriteInt udp_stream,bomben_norm_gegner(i)\aktiv WriteInt udp_stream,bomben_norm_gegner(i)\x WriteInt udp_stream,bomben_norm_gegner(i)\y WriteInt udp_stream,bomben_norm_gegner(i)\explosion_lauft Next WriteInt udp_stream,bomber\schaden WriteInt udp_stream,medipack_x WriteInt udp_stream,medipack_y WriteInt udp_stream,medi(0)\aktiv SendUDPMsg udp_stream,client\ip,8010 EndIf Print "Schande anzeige: " + bomber\schaden bomber.bomber = Last bomber If client\ip <> bomber\ip Then WriteInt udp_stream,client\ip WriteByte udp_stream,1 WriteInt udp_stream,bomber\x WriteInt udp_stream,bomber\y WriteInt udp_stream,bomber\char_frame_alg For i =10 To 19 WriteInt udp_stream,bomben_norm_gegner(i)\aktiv WriteInt udp_stream,bomben_norm_gegner(i)\x WriteInt udp_stream,bomben_norm_gegner(i)\y WriteInt udp_stream,bomben_norm_gegner(i)\explosion_lauft Next WriteInt udp_stream,bomber\schaden WriteInt udp_stream,medipack_x WriteInt udp_stream,medipack_y WriteInt udp_stream,medi(0)\aktiv SendUDPMsg udp_stream,client\ip,8010 EndIf Print "Schande anzeige: " + bomber\schaden Print "Standtort: "+medipack_x+ " " + medipack_y Print "Aktiv: " + medi(0)\aktiv Next Next For client.client = Each client Print "Client: "+ client\ip +" ist verbunden" Print "gegner: " + bomben_norm_gegner(5)\aktiv Print "gegner: " + bomben_norm_gegner(15)\aktiv Print "Respawnmedi: " + medi(0)\zeit Next Flip(0):Cls WaitTimer(timer) medi(0)\zeit = zeit() Until KeyHit(1) Function zeit() zeit = jetzt - start + 1000 Return zeit End Function |
||
- Zuletzt bearbeitet von xXThunderXx am Mo, Apr 13, 2009 16:25, insgesamt einmal bearbeitet
Pummelie |
Mo, Apr 13, 2009 16:25 Antworten mit Zitat |
|
---|---|---|
hm versuch es doch mal mit tcp
UDP klappt bei meinem neueren laptop zb auch nicht |
||
It's done when it's done. |
xXThunderXx |
Mo, Apr 13, 2009 16:38 Antworten mit Zitat |
|
---|---|---|
Ich empfang ja 90 % der Daten jedoch die letzten drei sachen die vom Server kommen werden nicht gesendet oder empfangen | ||
Tankbuster |
Mo, Apr 13, 2009 16:40 Antworten mit Zitat |
|
---|---|---|
Natürlich. UDP klappt schon.
EDIT: sry, verlesen ^^ |
||
Twitter
Download Jewel Snake! Windows|Android |
xXThunderXx |
Mo, Apr 13, 2009 16:43 Antworten mit Zitat |
|
---|---|---|
Zitat: Natürlich. UDP klappt schon. Ich hab den Code nur überflogen, und ein paar komische Sachen entdeckt.
Warum schreibst du z.B. Zitat: For i =0 To 9 WriteInt udp_stream,bomben_norm_gegner(i)\aktiv WriteInt udp_stream,bomben_norm_gegner(i)\x WriteInt udp_stream,bomben_norm_gegner(i)\y WriteInt udp_stream,bomben_norm_gegner(i)\explosion_lauft Next Es reicht doch, wenn du das EINMAL in den Stream schreibst. Das sind Daten die sich laufend verändern (Client-Server-Client) so zusagen die Position der gegnerischen Bombe. |
||
xXThunderXx |
Mo, Apr 13, 2009 21:12 Antworten mit Zitat |
|
---|---|---|
Habs jetzt gelöst das Problem. | ||
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group