2 Stimmen

Nicht blockierende Sockets in Python

Ich habe mir das Socket-Programmiermodul der Python-Standardbibliothek angesehen und habe eine Funktion socket.setblocking bemerkt. In der Dokumentation wurde erwähnt, dass das Setzen eines Sockets auf den nicht blockierenden Modus bedeuten würde, dass ein Fehler ausgelöst wird, wenn die Daten nicht sofort über den Socket gesendet werden können oder wenn beim Versuch, vom Socket zu lesen, keine Daten verfügbar sind.

Ich habe Schwierigkeiten, Anwendungsfälle zu verstehen, in denen diese Funktion nützlich sein könnte. Ich arbeite an einer Linux-Maschine (falls die Antwort darauf betriebssystemabhängig sein sollte).

Vielen Dank!

0voto

cobie Punkte 6467

Wenn Sie den Socket auf blockierend setzen, wartet der Socket die angegebene Zeit auf diesem Socket. Während er auf dem Socket wartet, kann Ihr Programm nichts tun. Am Ende der Wartezeit wird ein Fehler ausgelöst. Manchmal möchten Sie nicht, dass Blockieren auftritt. Ein guter Anwendungsfall hierfür könnte sein, wenn Sie in einem Single-Thread-Programm Nachrichten über mehrere Sockets senden und empfangen. Sie möchten nicht auf einem Socket blockieren, während Sie darauf warten, Nachrichten zu senden oder zu empfangen - stattdessen möchten Sie möglicherweise überprüfen, ob es Nachrichten zum Senden oder Empfangen für jeden der Sockets gibt. Daher möchten Sie keine Blockierungszeit oder eine begrenzte Blockierungszeit, während Sie die Sockets durchlaufen. Hier finden Sie eine ausführlichere Diskussion über Python-Sockets.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X