Netzwerkprogramm läuft bei 2 usern nicht mehr
Übersicht

LuusBetreff: Netzwerkprogramm läuft bei 2 usern nicht mehr |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
also ich hab nen server, der die aktuelle mausposition vom client mit nem quadrat anzeigt, programmiert. das klappt auch alles soweit ganz gut, nur sobald nen zweiter client dazukommt macht der server nichts mehr, so als ob er keine daten mehr bekommt. ich hab keine ahnung woran das liegt und hoffe, dass ihr mir helfen könnt. danke im vorraus Luus |
||
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
ohne code geht da wenig... | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
Luus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
client:
Code: [AUSKLAPPEN] Graphics 800,600,32,2
SetBuffer BackBuffer() Global frametimer = CreateTimer(5) ip$ = Input("IP:") udp = CreateUDPStream() If Not udp Then Print "error" EndIf SeedRnd MilliSecs() Global playerx Global playery WriteByte(udp,0) SendUDPMsg udp,INT_IP(ip$),6112 Repeat playerx = playerx+MouseXSpeed() playery = playery+MouseYSpeed() WriteByte(udp,1) WriteString(udp,playerx) WriteString(udp,playery) SendUDPMsg udp,INT_IP(ip$),6112 Text 0,0,playerx Text 0,10,playery Flip Cls Until KeyHit(1) End Function INT_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 server: Code: [AUSKLAPPEN] Graphics 800,600,32,2
SeedRnd MilliSecs() Type client Field color_red$ Field color_green$ Field color_blue$ Field playerx Field playery Field ip,port End Type SetBuffer BackBuffer() udp = CreateUDPStream(6112) If Not udp Then Print "error" EndIf Repeat If RecvUDPMsg(udp) <> 0 Then client_ip = UDPMsgIP(udp) client_port = UDPMsgPort(udp) message = ReadByte (udp) Select message Case 0 c.client = New client c\ip = client_ip c\port = client_port c\color_red$ = Rnd(0,255) c\color_green$ = Rnd(0,255) c\color_blue$ = Rnd(0,255) c\playerx = 0 c\playery = 0 Case 1 For c.client = Each client If c\ip = client_ip Then c\playerx = ReadString(udp) c\playery = ReadString(udp) EndIf Next End Select EndIf For c2.client = Each client Color c2\color_red$,c2\color_green$,c2\color_blue$ Rect c2\playerx,c2\playery,25,25 Next Flip Cls Until KeyHit(1) End |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich rate immer noch dazu, ein Prgramm zu machen... Das ist viel Übersichtliger und man kann besser das senden und empfangen nachvollziehen.
Sonst guck ich mir deinen code mal an... Schreib dann nochwas... Edit : Schreibe nie "SendUDPMsg udp,INT_IP(IP$),port", weil wenn es aufgerufen wird, rechnet der immer beim senden die IP aus, das verlangsamt sich seeeehr. Speicher das dierect in einer Varaible (IP% = INT_IP(Input("IP:")) ) Edit2 : Jetzt weiß ich woran das liegt mit dem Server : Du sendest mit dem Client immer und immer wieder (jeden schleifen druchgang) eine nachricht. Soweit so gut. Da der Server ungefähr genau so viele schleifen durchgäge hat wie der Client, kann er sie problemlos hintereinander anbfragen. Kommt aber ein 2. Client dazu, kompliziert sich das ganze. Der sendet nämlich jetzt auch jeden schleifen durchgang. Und die sachen muss der Server dann alle verarbeiten. Tipp : Baue bei den Clienten einen Sende-Timer ein, Also : Code: [AUSKLAPPEN] If SENDE_MS <= Millisecs() - 25 then ;Wenn 25 Millisekunden vorüber sínd...
;Senden SENDE_MS = Millisecs() ;Wieder zurück setzten... EndIf Nochwas : schreibe bei "Print error" das der das programm beenden soll, weil sonst gibts wirklich nen error... mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group