Was sind nicht blockierende Sockets?
Was sind nicht blockierende Sockets?

Video: Was sind nicht blockierende Sockets?

Video: Was sind nicht blockierende Sockets?
Video: Safety 1st | How to use Euro swivel sockets inserts safety accessory 2024, November
Anonim

nicht - Steckdosen blockieren . Die Lösung für dieses Problem heißt " nicht - Steckdosen blockieren ". Standardmäßig ist TCP Steckdosen sind in " Blockierung "-Modus. Wenn Sie beispielsweise recv() aufrufen, um aus einem Stream zu lesen, wird die Kontrolle nicht an Ihr Programm zurückgegeben, bis mindestens ein Datenbyte von der Remote-Site gelesen wurde.

Was ist dementsprechend blockierender und nicht blockierender Socket?

In Blockierung Modus, Recv, Send, Connect (nur TCP) und Accept (nur TCP) Steckdose API-Aufrufe werden Block auf unbestimmte Zeit, bis die angeforderte Aktion ausgeführt wurde. In nicht - Blockierung Modus kehren diese Funktionen sofort zurück. wählen wird Block bis zum Steckdose ist bereit.

Man kann sich auch fragen, ob Sockets standardmäßig blockieren? Von Ursprünglich , TCP Steckdosen sind in a. platziert Blockierung Modus. Dies bedeutet, dass die Steuerung erst nach Abschluss eines bestimmten Vorgangs an Ihr Programm zurückgegeben wird.

Wie erstellt man diesbezüglich einen nicht blockierenden Socket?

a. markieren Steckdose wie nicht - Blockierung , verwenden wir den Systemaufruf fcntl. Hier ein Beispiel: int flags = guard(fcntl(socket_fd, F_GETFL), "Datei-Flags konnten nicht abgerufen werden"); guard(fcntl(socket_fd, F_SETFL, Flags | O_NONBLOCK), "konnte nicht einstellen Datei-Flags");

Was ist Socket-Blockierung?

EIN Steckdose kann dabei sein" Sperrmodus " oder "nicht blockierend Modus ." Die Funktionen von Steckdosen in Blockierung (oder synchron) Modus kehren Sie nicht zurück, bis sie ihre Aktion abgeschlossen haben. Das nennt man Blockierung weil das Steckdose dessen Funktion aufgerufen wurde, kann nichts tun - wird blockiert - bis der Aufruf zurückkehrt.

Empfohlen: