TCP Probleme
Übersicht

onkelz89Betreff: TCP Probleme |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
habe einen Client und einen Server geschrieben, der Server soll die Koordinaten die er von einem Client bekommt an alle anderen weiterleiten und Anfangs dem Client (der sich gerade neu anmeldet) eine ID - Nummer zuweisen. Der Client soll mit Pfeiltasten bewegt werden (ein Oval) und seine X und Y Koordinaten an den Server senden, außerdem die Daten von den anderen Clients über den Server erhalten. Hier die Codes: Server: Code: [AUSKLAPPEN] Graphics 260,200,16,2 SetBuffer BackBuffer() AppTitle("Server") Type Client Field x Field y Field idnr Field ip Field msg$ Field time;zählt runter - wenn Null dann Anfrage - wenn keine Antwort - Logout! End Type Port=25000 Global ClientStrm ;Global ClientIP$ Global MSG$ Global ping,user Print "Verbindungsaufbau..." Server = CreateTCPServer(Port) If Server <> 0 Then Print "Server started..." Else Print "Error starting server." WaitKey End EndIf Delay 1000 timer=CreateTimer(60) While Not KeyHit(1) Cls anfrage=AcceptTCPStream(Server) If anfrage Then C.Client = New Client C\ip = anfrage C\msg=MSG C\time=30000 C\idnr=Rand(999999) WriteInt(c\ip,c\idnr) For S.Client = Each Client If c\idnr<>s\idnr Then WriteInt(c\ip,C\idnr) WriteInt(c\ip,C\x) WriteInt(c\ip,C\y) EndIf Next user=user+1 EndIf For c.client = Each client ClientStrm=c\ip If ClientStrm<>0 Then If ReadAvail(ClientStrm) Then C\time=30000 ping=ping+1 c\x=ReadInt(ClientStrm) c\y=ReadInt(ClientStrm) For S.Client = Each Client If c\idnr<>s\idnr Then WriteInt(c\ip,C\idnr) WriteInt(c\ip,C\x) WriteInt(c\ip,C\y) EndIf Next EndIf EndIf c\time=c\time-1 If c\time<1 Then Delete c Next Text 10,10,"USER: " yy=0 For c.client = Each client Text 10,25+yy*15,DottedIP(TCPStreamIP(c\ip))+" "+(c\time/60)+" Sek. to die" yy=yy+1 Next WaitTimer(timer) Flip Wend Client: Code: [AUSKLAPPEN] Graphics 400,400,16,2 SetBuffer BackBuffer() AppTitle("Client") Global RecMsg$ Type geg Field idnr Field x Field y End Type Port=25000 Join_IP$=Input("IP des Servers: ") Client = OpenTCPStream(Join_IP,Port) If Client <> 0 Then Print "Client connected to "+Join_IP Else Print "Error starting client." WaitKey End EndIf Global idnr=-1,xx=200,yy=200 Delay 100 While idnr=-1 If ReadAvail(Client) idnr=ReadInt(Client) AppTitle"Client-Nr."+idnr EndIf Wend timer=CreateTimer(60) While Not KeyHit(1) Cls While ReadAvail(Client) wer = ReadInt(Client) x = ReadInt(Client) y = ReadInt(Client) check=0 For n.geg = Each geg If n\idnr=wer Then n\x=x n\y=y check=1 Exit EndIf Next If check=0 Then n.geg = New geg n\idnr=wer n\x=x n\y=y EndIf Wend Color 255,0,0 For g.geg = Each geg Oval g\x-10,g\y-10,20,20 Next Color 0,255,0 Oval xx-10,yy-10,20,20 If KeyHit(200) Then yy=yy-5 WriteInt(Client,idnr) WriteInt(Client,xx) WriteInt(Client,yy) ElseIf KeyHit(208) Then yy=yy+5 WriteInt(Client,idnr) WriteInt(Client,xx) WriteInt(Client,yy) ElseIf KeyHit(203) Then xx=xx-5 WriteInt(Client,idnr) WriteInt(Client,xx) WriteInt(Client,yy) ElseIf KeyHit(205) Then xx=xx+5 WriteInt(Client,idnr) WriteInt(Client,xx) WriteInt(Client,yy) EndIf WaitTimer(timer) Flip Wend Es geht zwar, das der Client eine ID bekommt und die sind auch i-wie verbunden, jedoch sieht man die roten Ovale nie oder selten... was kann ich verbessern - bzw ein Ergebnis sehen ? |
||
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Folgendes:
1. Wenn du einen Timer brauchst, was ja auch gut ist so, solltest du Flip 0 benutzen 2. Der Server liest vom Client nur 2 Ints aus (x- resp y-Position), der Client schickt allerdings neben der Position noch einen dritten Int, nämlich seine eigene idnr (ist nicht nötig) 3. Wenn der Server die Clients anschreibt, geht das natürlich immer so: Sende dem Empfänger die Position vom aktiven Spieler. Da hat sich bei dir wohl ein kleiner Fehler eingeschlichen, denn du sendest dem Empfänger immer seine eigene Position ![]() BlitzBasic: [AUSKLAPPEN] For S.Client = Each Client So sollt's dann klappen (tut es zumindest bei mir) mfG |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cool, vielen Dank, das war´s schon ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group