Folgende Methodenaufrufe sind notwendig (es können aber je nach Szenario mehr werden):
soc.connect((host, port))
- Verbindet sich mit einem Remote-Host, Host und Port müssen als Tuppel übergeben werden
variable = soc.recv(1024)
Es werden 1024 aus dem eingehenden Netzwerkpuffer ausgelesen und in Variable gespeichert.
Sind keine 1024 Byte vorhanden, wird gewartet bis 1024 Byte vorhanden sind oder die Verbindung durch die Gegenseite beendet wurde.
send_byte = soc.send(Daten)
Schreibt Daten in den Netzwerkpuffer.
Achtung: Ist der Netzwerkpuffer bereits angefüllt oder die Datenmenge zu groß für den Netzwerkpuffer werden nur so viele Daten wie in den freien Puffer passen geschrieben. Sobald dieser voll ist gibt die Methode die Menge der angegebenen Daten zurück. Es kann also sein, dass für den Rest der noch nicht geschriebenen Daten noch mal send(Daten) aufgerufen werden muss.
Alternativ kann man sendall() benutzen:
soc.sendall(Daten)
Das ruft send() so oft auf, bis alle Daten gesendet wurden. Es blockiert aber auch so lange bis alle Daten gesendet wurden.
filehandle = soc.makefile(Mode, encoding)
filehandle.write(Daten)
Oben stehender Code schreibt die Daten in die „Datei“ (auf das Netzwerk).
Achtung: Die Daten werden ggf. nicht oder nicht alle sofort gesendet. Wird die Verbindung geschlossen (egal von welcher Seite) bevor alle Daten gesendet wurden, werden diese einfach nicht gesendet. Also auch ein soc.close vom sendenden System führt nicht dazu, dass alle Daten zuvor gesendet werden! Um sicher zu stellen, dass alle Daten vor dem Schließen auf die andere Seite gesendet wurden, muss man filehandle.flush() aufrufen.
Gelesen werden können die Daten per read oder per loop:
filehandle.read()
Wobei obiger Aufruf erst zurückkommt wenn die Verbindung durch die Gegenseite abgebaut wird.
Normalerweise würde read() bis zum Ende der Datei lesen, in diesem Fall hat die Datei aber kein Ende, also wird ein künstliches Dateiende mit dem Ende der Übertragung gesetzt - natürlich kann man auch wie bei „richtigen“ Dateien read ein Limit übergeben, dann kommt es zurück, sobald entweder die angegebene Menge Byte empfangen wurden oder die Übertragung beendet wurde.
for line in filehandle: somecode
Die Schleife ließt die Daten Zeilenweise aus der Datei (wenn in den Daten Zeilenumbrüche enthalten sind). Sie wird so lange laufen, bis die Verbindung beendet ist (dann ist das Ende der Datei erreicht).
soc.bind((IP, port))
- Bindet den Socket an eine bestimmte IP des Systems und an einen bestimmten Port (muss als tuple angegeben werden)