Socket Programmierung am Beispiel eines Chat-Servers in Python 2.7

Socket-Programmierung ist eine wichtige Fähigkeit, welche ein Programmierer beherrschen sollte, da man damit seine Programme übers Internet kommunizieren lassen kann. Ein entsprechendes Modul, welches die nötigen Funktionen bereitstellt ist in fast jeder Programmiersprache Standard. Das Modul übernimmt dabei die Übersetzung in die darunterliegenden Soft- und Hardware Schichten. Man steigt dabei auf der UDP bzw. TCP Ebene ein.

Um eine Verbindung aufzubauen muss zunächst einmal ein Computer an einen Port bzw. seine IP gebunden werden und somit als Server definiert werden. Ist dies geschehen kann jeder andere Computer, welcher sich im gleichen Netzwerk befindet, sich mit dem Server verbinden, wenn dieser Port und IP kennt.

Dieses Schaubild zeigt die Situation, welche zwischen Server und Client nach einer erfolgreichen Verbindung vorliegt. Client und Server können sich beide String gegenseitig zu senden. Der Übertragende String landet dann in einem Buffer, welcher bei Bedarf ausgelesen werden kann.
Dieses Schaubild zeigt die Situation, welche zwischen Server und Client nach einer erfolgreichen Verbindung vorliegt. Client und Server können sich beide String gegenseitig zu senden. Der Übertragende String landet dann in einem Buffer, welcher bei Bedarf ausgelesen werden kann.

Aber jetzt genug mit der Theorie und auf zum praktischen Teil:

Eine beispielhafte Verbindung zwischen Client und Server in Python. Hierbei gibt der Server die IP des Clients zurück. Man kann ihn also verwenden um seine eigene IP herauszufinden ;).

Server:

Client:

Und jetzt zu einem sehr einfachen Chat-Programm in Python. Zunächst wird die Funktionsweise von Client und Server an zwei Sequenzendiagrammen veranschaulicht.

Python Chat-Server Sequ

  • Server wird an einen Port und IP gebunden.
  • Für jeden neuen Client wird ein „ClientObjekt“ als neuer Thread erzeugt.
  • Das ClientObjekt leitet alle ankommenden Pakte an die anderen existierenden ClientObjekte weiter.
  • Falls ein Client die Verbindung schließt, wird dies abgefangen.

Python Chat-Client Sequ

  • Verbindung zu einem Server mit bekanntem Port und IP
  • Neuer Thread, welche auf Kommandozeileneingaben wartet und diese an den Server schickt
    • ACHTUNG: Da bei der Python-Shell bei einem „input“ Befehl die komplette Shell blockiert wird und somit eingehende Chatnachrichten von Server nicht durch kommen, sollte das Programm auf der CMD gestartet werden.
  • Die „checkBuffer()“ Methode printet eigehende Chatnachrichten an die Konsole
  • Falls der Server die Verbindung schließt wird das Programm auch geschlossen.

Eigenprogrammiertes Chat-Programm:

Server

Client

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*