Die Internet-Verbindung von Python (Die Internet-Verbindung von Python), Lektion, Seite 724404
https://www.purl.org/stefan_ram/pub/internet_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

Die Internet -Verbindung von Python 

CPython  unter Windows 

CPython  unter Windows  übernimmt die Einstellungen des Betriebssystems (wie beispielsweise den Proxy), kann aber durch folgende Umgebungsvariablen¹ beeinflußt werden.

Umgebungsvariablen
HTTP_PROXY        Proxy für HTTP 
HTTPS_PROXY       Proxy für HTTPS 
NO_PROXY          Domains[:port] ohne Proxy, kommagetrennt, »*«= „alle Domains ohne Proxy“

Von Python  aus können Umgebungsvariablen mit »__import__( 'os' ).environ[ name  ] = wert « eingestellt werden, von Windows  aus mit »SET name  = wert « (Löschen: »SET name  =«).

Ursachen für bestehende Verbindungsprobleme können auch Einstellungen von Brandmauern sein.

¹ siehe auch: Dokumentation von »urllib.request.urlopen« und »urllib.request.ProxyHandler«.

Beispiele

__import__( 'os' ).environ[ 'NO_PROXY' ] = '*' 

Benutzung von Sockets

Beispiel (unvollständig)

import socket as sockets

socket = sockets.socket( sockets.AF_INET, ...

socket.connect( ( 'news.albasani.net', 119 ...

print( 'connected' )

socket.send( b'Hello\r\n' )

print( 'sent' )

reply = socket.recv( 100 )

print( 'reply:', str( reply ))

socket.close()

Zur Vorgehensweise beim Empfangen von Daten mit sockets

Mit "recv" werden maximal so viele Bytes gelesen, wie beim Aufruf durch den Argumentwert angegeben wird.

Ein Aufruf von "recv" kann aber auch weniger Daten liefern, so daß es nötig werden kann, "recv" erneut aufzurufen, um eine bestimmte Nachrichte vollständig zu erhalten. Längere Nachrichten können so durch eine Folge mehrerer "recv"-Aufrufe erhalten werden, deren Ergebnisse dann zusammenzusetzen sind, um die gesamte Nachricht zu erhalten.

Wenn bekannt ist, daß die erwartete Nachricht eine bestimmte Länge hat, dann kann "recv" solange aufgerufen werden, bis entsprechend viele Bytes eingelesen wurden. Bytes, die darüber hinaus noch erhalten wurden, gehören schon zur nächsten Nachricht und sollten daher für diese nächste Nachricht aufbewahrt werden.

Eine Nachricht wird also im allgemeinen in einer "recv"-Schleife empfangen.

Dabei sind noch die folgenden Situationen möglich:

Neben Nachrichten fester Länge werden auch Nachrichten mit einer Endmarkierung verwendet. Um eine solche Nachricht zu empfangen, fügt man die Ergebnisse aller bisherigen "recv"-Aufrufe hintereinander bis man darin die Endmarkierung findet. Damit ist die aktuelle Nachricht empfangen. Eventuelle Bytes, die nach der Endmarkierung noch gelesen wurden, sollten wieder als Anfang der nächsten Nachricht aufbewahrt beziehungsweise verwendet werden.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724404 stefan_ram:724404 Die Internet-Verbindung von Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724404, slrprddef724404, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/internet_python