Wie einen Loginserver erstellen

07/09/2018 15:51 b0sted#1
hey ich bin auf der suche nach jemanden der mir ein code example für einen loginserver bereitstellt.

das sollte wie folgt laufen:

client will sich in das interface einloggen und drückt auf "login"
client sendet ein packet an den server welcher den username und das passwort beinhaltet
server bekommt das packet, verarbeitet es (schaut ob die daten richtig sind username+pw) und gibt ein response, wie zum beispiel "login failed"
client bekommt den response und eine messagebox wird geöffnet mit der nachricht "username oder passwort falsch"

wäre echt toll wenn mir da jemand helfen könnte..
07/09/2018 15:57 Ludder231#2
Ich glaube weniger, dass die Leute hier C&P Material reinstellen werden.

Du solltest dich mit TCP/UDP auseinander setzen. Dazu kannste ja noch JSON nehmen damit die Daten einfach und schnell verarbeitet werden.

Nützlich wäre auch noch zu wissen in welcher Programmiersprache du denn den Coden schreiben willst.
07/09/2018 16:24 b0sted#3
Quote:
Originally Posted by Ludder231 View Post
Ich glaube weniger, dass die Leute hier C&P Material reinstellen werden.

Du solltest dich mit TCP/UDP auseinander setzen. Dazu kannste ja noch JSON nehmen damit die Daten einfach und schnell verarbeitet werden.

Nützlich wäre auch noch zu wissen in welcher Programmiersprache du denn den Coden schreiben willst.
Ich mache alles in C#.
07/09/2018 16:39 Serraniel#4
Google einfach mal ein wenig danach, da gibt es hunderte von Beispielien zu, z. B. [Only registered and activated users can see links. Click Here To Register...]

Die etwas moderneren dann mit async / await.
07/09/2018 16:39 Ludder231#5
[Only registered and activated users can see links. Click Here To Register...]

Hier mal ein Beispiel für einen Socket Server
Der wichtigste Teil ist denke ich für dich erstmal der hier:
PHP Code:
 if (content.IndexOf("<EOF>") > -1) {  
                
// All the data has been read from the   
                // client. Display it on the console.  
                
Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",  
                    
content.Lengthcontent );  
                
// Echo the data back to the client.  
                
Send(handlercontent);  
            }.... 
Das <EOF> nicht vergessen ;)
07/09/2018 16:46 warfley#6
Wenn du daten übers netzt versendest musst du dich für ein Protokoll entscheiden.

Da hast du praktisch 2 Möglichkeiten:
1. bereits bekanntes protokoll verwenden
Der De-Facto standard fürs netz ist aktuell HTTP. Egal ob Video/Musik Streaming, Login funktionalität, oder auch manche spiele verwenden oftmals HTTP. Das hat den Grund das HTTP sehr flexibel ist, da es das übertragen von beliebigen Daten als Text encodiert (z.B. json) erlaubt. Außerdem kann man damit den Server einfach in PHP schreiben und kann ihn auf jedem Freehoster laufen lassen. Etwas doof ist es allerdings da die meisten Server immernoch nur version 1.2 verwenden und noch nicht HTTP2. HTTP/1.2 hat einen ernormen Overhead und daher rate ich davon ab.

2. Du schreibst dein eigenes Protokoll auf basis eines Transport protokolls. Das erlaubt dir das Protokoll perfekt auf dein System zu finetunen, allerdings bedeutet das natürlich mehr arbeit. Als Transport Protokoll kannst du entweder TCP (sicher stream) oder UDP (lightwight pakete) verwenden. TCP ist außerdem socket gebunden, was bedeutet sobald dein Rechner die Internet connection verliert ist der TCP stream broken.
Alternativ sollten die ersten Versionen von Quic mittlerweile benutzbar sein, praktisch eine auf UDP aufbauende TCP alternative welche nicht so statisch wie TCP sein soll, aber auch weniger overhead hat.
Wenn du ganz crazy bist kannst du auch ohne Transport Protokoll (IPRaw) arbeiten, damit kann man in lokalen netzwerken echt coolen shit machen, würde ich für Internet access aber nicht empfehlen (da du spätestens beim NAT auf die nase fliegst)


Die Frage bevor du dich für eine der Optionen entscheiden kannst ist natürlich, was willst du überhaupt machen. Login funktionalität sollte man praktisch immer in einem sicheren stream, also TCP oder Quick (z.B. mit HTTP) machen. Die frage ist, was passiert nach dem Login.

PS: Sicher bezeichnet hier nicht IT-Security Sicher (also gegen angriffe) sondern lediglich die tatsache das auf den Übertragungsweg nichts verloren geht). Egal was man in einen TCP oder Quic stream schreibt, es kommt entweder auf der anderen seite an, oder die Connection breakt komplett. Bei UDP sendet man keinen stream sondern einzelne Pakete, und die können ankommen, müssen aber nicht. Damit ist UDP natürlich deutlich schneller als TCP, aber nicht sicher