UDP geht nur in die eine Richtung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

blitzuser34

Betreff: UDP geht nur in die eine Richtung

BeitragSo, Jan 04, 2009 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

ich bin gerade dabei, den Log-In Teil meines Servers zu schreiben.

Server:

Code: [AUSKLAPPEN]
;Server Stream auf Port 4000 erstellen
port=4000
udp=CreateUDPStream(port)

;Wenn der Stream nicht erstellt werden konnte Fehlermeldung ausgeben
If Not udp Then
   RuntimeError "Stream konnte nicht erstellt werden!"
EndIf

Repeat
   Select WaitEvent(0)
      Case $803
         CloseUDPStream(udp)
         End
      Case $401
         source=EventSource()
         DoGadgetAction(source)
   End Select
   
   ;Wenn nachricht reinkommt
   If RecvUDPMsg(udp)<>0 Then
      
      ;IP und Port bestimmen
      client_ip=UDPMsgIP(udp)
      client_port=UDPMsgPort(udp)
      
      ;Message Nummer
      message=ReadByte(udp)
      
      ;Auswerten der Message Nummer
      Select message
         ;Benutzer loggt sich ein
         Case 1
            ;Login reinlesen
            benutzername$=ReadString(udp)
            passwort$=ReadString(udp)
            
            ;Überprüfen
            check=checkplayerlogin(benutzername$,passwort$)
            
            If check=1 Then
               ;Neuer Benutzer loggt sich ein
               cl=New client
               
               ;Seine IP und sein Passwort speichern
               cl\ip=client_ip
               cl\port=client_port
               
               ;Mitteilen dass eingeloggt
               WriteByte(udp,3)
            ElseIf check=0 Then
               ;Mitteilen, dass nicht eingeloggt
               WriteByte(udp,4)
            EndIf
            
            SendUDPMsg udp,client_ip,client_port
            
         ;Benutzer erstellt einen Account
         Case 2
            ;Login reinlesen
            benutzername$=ReadString(udp)
            passwort$=ReadString(udp)
            
            ;Erstellen
            check=accounterstellen(benutzername$,passwort$)
            
            If check=1 Then
               ;Mitteilen dass erstellt
               WriteByte(udp,5)
            ElseIf check=0 Then
               ;Mitteilen, dass nicht erstellt
               WriteByte(udp,6)
            EndIf
            
            SendUDPMsg udp,client_ip,client_port
            
      End Select
      
   EndIf
      
Forever


Client:

Code: [AUSKLAPPEN]
server_ip$="127.0.0.1"
server_port=4000
Global udp = CreateUDPStream()

Repeat
   Select WaitEvent()
      Case $803
         End
      Case $401
         source=EventSource()
         If source=Button2 Then
            End
         ElseIf source=Button1 Then
            WriteByte(udp,1)
            WriteString(udp,TextFieldText(TextField1))
            WriteString(udp,TextFieldText(TextField2))
            SendUDPMsg udp,INT_IP(server_ip$),server_port
            
            response=ReadByte(udp)
            If response=3 Then Exit
            If response=4 Then Notify "Benutzername oder Passwort falsch!"
            
         ElseIf source=Button3 Then
         
         EndIf
         
   End Select
Forever
HideGadget window


Vom Client zum Server funktioniert es ja ganz gut, jedoch nicht in die andere Richtung. response ist immer 0.

Warum?

The_Nici

BeitragSo, Jan 04, 2009 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Sind die Ports für den Server beim Router geöffnet?
MfG

blitzuser34

BeitragSo, Jan 04, 2009 18:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, sonst dürfte ja das hier nicht funktionieren:

https://www.blitzforum.de/foru...p+tutorial

Jedenfalls hat es nichts gebracht, den Port extra freizugeben.

Eingeproggt

BeitragSo, Jan 04, 2009 20:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Login-System mit UDP?
Du bist doch schon länger dabei und hast sicher wo gelesen, dass UDP verlustbehaftet ist? Ich dachte anfangs auch "Ja, theoretisch"... Bis einem dann beim Testen praktisch was abhanden kommt und man daher n fetten Bug in seinem Programm hat. Tu dir das ned an, nimm für Login und ähnlich wichtige Dinge TCP. (Oder versuch dir ein sicheres Protokoll über UDP selbst zu schreiben mit Empfangsbestätigungen etc)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

blitzuser34

BeitragDi, Jan 06, 2009 16:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

versuche gerade Port Forwarding zum Laufen zu kriegen. Nur leider funktioniert es mal wieder nicht.

Jetzt habe ich gelesen dass man eine feste IP braucht. Da momentan die IPs dynamisch vergeben werden, wollte ich fragen ob es reicht, bei TCP eine feste IP einzustellen, oder muss ich am Router noch was machen?

Blitzuser34

Hagbard

BeitragDi, Jan 06, 2009 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
edit: war leider falsch.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group