udp verbindungstest[erledigt]

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Dragonkiller

Betreff: udp verbindungstest[erledigt]

BeitragMi, Jun 06, 2007 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 06, 2007 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 06, 2007 16:39
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 06, 2007 16:43
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 06, 2007 17:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 06, 2007 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMi, Jun 06, 2007 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
ok danke für deine antwort jetzt kann ich endlich weitermachen Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group