udp verbindungstest[erledigt]
Übersicht

![]() |
DragonkillerBetreff: udp verbindungstest[erledigt] |
![]() Antworten mit Zitat ![]() |
---|---|---|
wie kann man mit udp testen ob ein client noch da is selbst wenn das programm abstürzen sollte? | ||
- Zuletzt bearbeitet von Dragonkiller am Mi, Jun 06, 2007 19:13, insgesamt einmal bearbeitet
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
send ihm 30 spezielle nahrichten und den client baust du so dass er auf gerade diese mit 30 nachrichten beantwortet... kommt keine nachricht zurück muss schon die verbindung so schlecht sein, dass alle 20 nachrichten nicht beim client ankommen oder wenn 1 oder 2 ankommen die 30 bzw 60 antworten im netz verloren gehen. Da kann man den spieler soieso wegen schlechter verbindung vergessen^^
EDIT ups ganz vergessen.... oder die nachrichten können nicht ankommen weil es keinen client mehr gibt... folglich antwortet auch keiner |
||
![]() |
Dragonkiller |
![]() Antworten mit Zitat ![]() |
---|---|---|
jetzt weis ich aber immenoch nich wie ich dem server mitteile das ein client nich mehr das is (wenn er sich abmeldet ist es klar wies geht) | ||
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
der server sendet ne nachricht und wenn der client diese empfängt sendet er eine antwort. bekommt der server keine antwort ist der client nicht da. | ||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
Dragonkiller |
![]() Antworten mit Zitat ![]() |
---|---|---|
so weit war ich auch schon aber ich krieg das nich bei mir rein
Code: [AUSKLAPPEN] Graphics 640,480,32,2 AppTitle "Server" Type Client Field nick$,ip$,intip% End Type SetBuffer BackBuffer() inport=11000 outport=11001 wrstream=CreateUDPStream(outport) rdstream=CreateUDPStream(inport) While Not KeyHit(1) ;Clientcheckroutine For user.client = Each client WriteLine "CONNECTIONCHECK" SendUDPMsg(wrstream,intip,11003) Next ;Namensausgaberoutine y%=12 Text 400,0,"aktive user:" For user.client = Each client Text 400,y,user\nick$ y=y+12 Next ;Schreibroutine If KeyHit(57) FlushKeys() choose$=Input("Message(m) or Command(c) ?>") FlushKeys() Select choose Case "c" FlushKeys() msg$=Input("Command>") FlushKeys() WriteLine wrstream,msg SendUDPMsg(wrstream,intip,11003) Case "m" FlushKeys() msg$=Input("Message>") FlushKeys() For user.client = Each client WriteLine wrstream,"MESSAGE" WriteLine wrstream,"Server" WriteLine wrstream,msg SendUDPMsg(wrstream,user\intip,11003) Next End Select End If ;Nachrichtenauswertungsroutine IP_rd=RecvUDPMsg(rdstream) If IP_rd<>0 rdmsg$=ReadLine(rdstream) Select rdmsg Case "MESSAGE" For user.client = Each client If DottedIP(UDPMsgIP(rdstream)) = user\ip$ rdmsg=ReadLine(rdstream) Print user\nick$+": "+rdmsg wuser$=user\nick$ EndIf Next For user.client = Each client WriteLine wrstream,"MESSAGE" WriteLine wrstream,wuser$ WriteLine wrstream,rdmsg$ SendUDPMsg(wrstream,user\intip,11003) Next Case "ANMELDUNG" user.client = New client user\nick$ = ReadLine(rdstream) user\ip$ = DottedIP(UDPMsgIP(rdstream)) user\intip% = int_ip(user\ip$) End Select EndIf Wend 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 |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
der code wird jede minute einmal ausgeführt:
Code: [AUSKLAPPEN] For user.client = Each client if user\msg_send_and_no_answer=1 then delete user;msg losgeschickt und keine antwort: Löschen For count=1 to 30 WriteLine wrstream,"Noch Da???" SendUDPMsg(wrstream,user\intip,11003) Next user\msg_send_and_no_answer=1 ;<-Type feld existier noch nicht Next und bei dem select von den ankommenden Nachrichten Code: [AUSKLAPPEN] case "Noch Da???";=anfrage-> CIh muss dem antworten For user.client = Each client If DottedIP(UDPMsgIP(rdstream)) = user\ip$ For count=1 to 30 WriteLine wrstream,"Ja bin ich" SendUDPMsg(wrstream,user\intip,11003) Next EndIf Next case "Ja bin ich";=Antwort For user.client = Each client If DottedIP(UDPMsgIP(rdstream)) = user\ip$ user\msg_send_and_no_answer=0;aha ihm wurde was gesendet und die antwort ist auch schon da EndIf Next so, alle Klarheiten beseitigt? schön. |
||
![]() |
Dragonkiller |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok danke für deine antwort jetzt kann ich endlich weitermachen ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group