TCP Problem Mit Blitzbasic
Übersicht

lohgockBetreff: TCP Problem Mit Blitzbasic |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey,
ich schreib heir grad an nem ORPG(RPG Engine hab ichs hcon geproggt) Jetzt steh ich vor nem problem. Erst Mal der code: Code: [AUSKLAPPEN] AppTitle "Gamer: "+Gamers+"/5000"
Dim gamer(5000,7) Global datei = WriteFile("logfile.log") ;gamer(1,1) = hp ;gamer(1,2) = mp ;gamer(1,3) = xp ;gamer(1,4) = class ;gamer(1,5) = x ;gamer(1,6) = y ;gamer(1,7) = map Stream = CreateTCPServer(2525) Repeat ClientStream = AcceptTCPStream(Stream) Text 100,100, "Eingabe" a = GetKey() If a > 31 Then name1$ = name1$ + Chr$(a) If (a = 8) And Len(name1$) > 0 Then name1$ = Left$(name1$, Len(name1$) - 1 ) Text 170,100,name1$ If KeyHit(28) Then Select name1 Case "end" End End Select name1$ = "" EndIf If clientstream <> 0 Then art = ReadByte(clientstream) Select art Case 1 AppTitle "Gamer: "+Gamers+"/5000" name$ = ReadString(clientstream) printb(name$+" eingetreten") gamers = gamers+1 Case 2 gamer(1,1) = ReadString(clientstream) printb(gamer(1,1)) End Select EndIf Forever Function printb(k$) Print k$ WriteLine datei,k$ End Function Client: Code: [AUSKLAPPEN] AppTitle "MMORPG"
Global rectx Global recty Global koord$ Global Stream = OpenTCPStream("127.0.0.1",2525) If Not Stream Then Color 255,100,100 : Print "Netzwerkfehler!" : Delay 1000 : End FlushKeys name$ = "Jussi" WriteByte stream,1 WriteString stream,name Repeat Cls If KeyDown(205) = 1 Then sendkoord() rectx = rectx +1 EndIf If KeyDown(203) = 1 Then sendkoord() rectx = rectx -1 EndIf If KeyDown(200) = 1 Then sendkoord() recty = recty -1 EndIf If KeyDown(208) = 1 Then sendkoord() recty = recty +1 EndIf koord$ = rectx+","+recty Rect rectx,recty,10,10 Flip Until KeyHit(1) End Function sendkoord() WriteByte stream,2 WriteString stream,koord End Function Jo Also,Ich starte Server dann Client dann kommt "Jussi eingetreten" und wenn ich dann im Client gehe schickt der Client zwar,aber der server empfängt nichts" Woran kann das liegen? EDIT: Ich denke es liegt darand as er immer nur 1 abruft also ich kann mehrere clients connecten und er sagt imemr verbunden aber wenn die dann was anderes schickenkomtm nix! |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fehler auf Serverseite:BlitzBasic: [AUSKLAPPEN] If clientstream <> 0 ThenDu musst für jeden Clienten sein individuelles Handle speichern. Ob Du das nun mit Array oder Type machst sei Dir überlassen ![]() ![]() WriteByte stream,1 ; Nachrichtentypdonnern 56 Byte Header mit durch die Leitung. Umgehen kann man das indem man alle benötigten Daten die zusammengehören in eine Bank schreibt und den Bankinhalt dann wiederum via WriteBytes in den Stream. Dann geht alles zusammen als ein Paket auf die Reise ![]() Und danke an Peer für die Infos ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
lohgock |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich mach:
BlitzBasic: [AUSKLAPPEN] gamer(Spielernummer,8) = AcceptTCPStream(Stream) und dann muss ich jeden einzelnen abfragen oder? |
||
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja. Das Handle das AcceptTCPStream zurückgibt ist quasi der Zeiger auf den Clienten. Und mit dem kannst Du ReadAvail füttern um zu sehen ob er denn überhaupt was geschickt hat.
Weils mir grade noch auffällt: Du jagst in jedem Frame Daten durch die Leitung sofern er sich bewegt. Der Ansatz ist schon sehr gut (also das nur gesendet wird wenn sich was ändert), aber jeden Frame ist etwas viel ![]() ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group