UDP: Ein ungefundner Fehler muss gefunden werden

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Tobchen

Betreff: UDP: Ein ungefundner Fehler muss gefunden werden

BeitragFr, Feb 06, 2004 16:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Da ich in DCs UDP-Game irgendwann nicht mehr durchblickte habe ich einfach mal selbst was geschrieben, um u testen, was ich jetzt kann. (Ich habe nicht abgeschrieben. Ich habe nur manche Sachen aus DCs UDP-Game für klug gehalten und diese verwendet.). Nun weiß ich, dass ich wohl wenig gelehrnt habe, weil sich ein Fehler eingeschlichen hat, den ich nicht finde.

Code: [AUSKLAPPEN]
;Codes:
;1 = Join
;2 = Angenommen
;3 = Abgelehnt

Graphics 640, 480, 16, 2
SetBuffer FrontBuffer()

Global ServerIP$
Global MyIP
Global ServerPort
Global MyPort
Global MyStream
Global MyName$
Global Server
Global MyID
Global Code
Global TmpIP
Global GesamtPlayer = 1
Global TmpName$
Global TmpPort
Global TmpID

Dim PlayerX(32)
Dim PlayerY(32)
Dim PlayerName$(32)
Dim PlayerPort(32)
Dim PlayerIP(32)



Print "1) Join"
Print "2) Host"

Repeat
   If KeyDown(2) Then Gosub Join
   If KeyDown(3) Then Gosub Host
Forever

.Join
Server = 0

Print ""
Print "Name:"
FlushKeys
MyName$ = Input$(">")

Print "Port:"
FlushKeys
MyPort = Input(">")

Print "ServerIP:"
FlushKeys
ServerIP$ = Input(">")

Print "ServerPort:"
FlushKeys
ServerIP$ = Input(">")

MyStream = CreateUDPStream(MyPort)

Print "Verbinden..."

WriteByte MyStream, 1
WriteLine MyStream, MyName$
WriteInt MyStream, MyPort
SendUDPMsg MyStream, IntIP(ServerIP$), ServerPort

Repeat
   If KeyDown(1) Then End
   
   If RecvUDPMsg(MyStream) Then
      If ReadAvail(MyStream) Then
         Code = ReadByte(MyStream)
         
         Select Code
            Case 2
               MyID = ReadInt(MyStream)
               MyIP = ReadInt(MyStream)
               PlayerIP(MyID) = MyIP
               PlayerPort(MyID) = MyPort
               PlayerName$(MyID) = MyName$
               Print "Angenommen!"
               WaitKey
               Gosub Game
            Case 3
               Print "Abgelehnt!"
               WaitKey
               End
         End Select
      EndIf
   EndIf
Forever

.Host
Server = 1

Print ""
Print "Name:"
FlushKeys
MyName$ = Input$(">")

Print "Port:"
FlushKeys
MyPort = Input(">")

MyStream = CreateUDPStream(MyPort)

n = CountHostIPs("")
MyIP = HostIP(1)

MyID = 1
PlayerIP(MyID) = MyIP
PlayerPort(MyID) = MyPort
PlayerName$(MyID) = MyName$

Gosub Game



.Game

SetBuffer BackBuffer()

Repeat
   Cls
   
   If KeyHit(1) Then End
   
   For I = 1 To 32
      If PlayerName$(I) <> "" Then Rect PlayerX(I), PlayerY(I), 10, 10
   Next
   
   If RecvUDPMsg(MyStream) Then
      If ReadAvail(MyStream) Then
         Code = ReadByte(MyStream)
         
         Select Code
            Case 1
               If GesamtPlayer < 32 Then
                  TmpIP = UDPStreamIP(MyStream)
                  TmpName$ = ReadInt(MyStream)
                  TmpPort = ReadInt(MyStream)
                  
                  For I = 1 To 32
                     TmpID = I
                     
                     If PlayerName$(TmpID) <> "" Then
                        WriteByte MyStream, 2
                        WriteInt MyStream, TmpID
                        WriteInt MyStream, TmpIP
                        SendUDPMsg MyStream, TmpIP, TmpPort
                        Exit
                     EndIf
                  Next
                  
                  PlayerName$(TmpID) = TmpName$
                  PlayerIP(TmpID) = TmpIP
                  PlayerPort(TmpID) = TmpPort
                  
                  GesamtPlayer = GesamtPlayer + 1
               EndIf
         End Select
      EndIf
   EndIf
               
   
   If KeyDown(200) Then PlayerY(MyID) = PlayerY(MyID) - 1
   If KeyDown(208) Then PlayerY(MyID) = PlayerY(MyID) + 1
   If KeyDown(203) Then PlayerX(MyID) = PlayerX(MyID) - 1
   If KeyDown(205) Then PlayerX(MyID) = PlayerX(MyID) + 1
   
   TmpIP = 0
   
   Flip
Forever







Function IntIP(inputIP$)                                    ;-> wandelt ip$ in interger um
   Local break1,break2,break3,add1,add2,add3,add4,ipreturn            ;
   break1 = Instr(inputIP$,".")                              ;
   break2 = Instr(inputIP$,".",break1+1)                        ;
   break3 = Instr(inputIP$,".",break2+1)                        ;
   add1 = Mid(inputIP$,1,break1-1)                              ;
   add2 = Mid(inputIP$,break1+1,break2-1)                        ;
   add3 = Mid(inputIP$,break2+1,break3-1)                        ;
   add4 = Mid(inputIP$,break3+1)                              ;
   ipreturn=(add1 Shl 24) + (add2 Shl 16) + (add3 Shl 8) + add4      ;
   Return ipreturn                                          ;
End Function


Hoffe, ihr könnt mir helfen.
Tobchen - die Welt von Tobi!

Tobchen

BeitragSa, Feb 07, 2004 9:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich nehme an, ihr könnt mir nicht helfen Sad .
Tobchen - die Welt von Tobi!

Suco-X

Betreff: ...

BeitragSa, Feb 07, 2004 9:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Nungut. Ein Fehler ist mir da direkt ins Gesicht gesprungen.

Code: [AUSKLAPPEN]

TmpName$ = ReadInt(MyStream)


Irgendwie nicht so das ware. Du Sendest es mit WriteLine, also lies auch wieder mit Readline aus den TmpName.
bye
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group