タグ

selectに関するnihohiのブックマーク (2)

  • Geekなぺーじ : selectを使う

    普通の状態では、readやrecvfromはデータが受信できるまでブロッキングします。 ソケットを一つしか利用していない場合にはブロッキングは非常に便利なのですが、ソケットが複数になると困ってしまいます。 複数のソケットを扱うとき、片方のソケットでブロッキングしたままになってしまうと他のソケットにデータが到着しても受信が出来なくなってしまいます。 そのため、複数のソケットを扱っていると、どのソケットからデータが受信可能か知りたくなります。 ブロッキングとは、関数が返ってこない事を表します。 例えば、readはデータを受信して関数が戻ってきます。 言い方を変えると、データを受信するまでブロックしています。 readやrecvfromをブロッキングしないノンブロッキング方式で使う事も可能ですが、ここではブロッキング方式のまま使う方法を説明します。 そのような機能を提供するのがselectです。

  • Pythonでネットワークプログラミング | saito's memo

    サーバ側 サーバ側のプログラムは基的に、 socketでソケットを作成 bindでアドレスとポート番号を指定 listenでクライアントの接続を待つ acceptでクライアントの接続を受け付ける sendやrecvを使ってクライアントのデータの送受信を行う closeでソケットを閉じる の流れで行う。 tcp_server1.py from __future__ import print_function import socket from contextlib import closing def main(): host = '127.0.0.1' port = 4000 backlog = 10 bufsize = 4096 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) with closing(sock): s

  • 1