7.2.1 ソケットオブジェクト

ソケットオブジェクトは以下のメソッドを持っています。 これらはmakefile()を除いてソケットに適用できるUnixシステムコール に対応しています。

accept ()
コネクションを受け入れます。 ソケットはアドレスに結び付けられていてコネクションをlistenしていなければなりません。戻り値は一組の(conn, address)です。ここで、 connはそのコネクションでデータの送受信に使える新しいソケットオブジェクトであり、addressはコネクションの他の終端のソケットに結び付けられた アドレスです。

bind (address)
ソケットをaddressに結び付けます。そのソケットは既に結び付けられていてはいけません。(addressの形式はアドレスファミリに依存します。上記参照)

close ()
ソケットを閉じます。そのソケットオブジェクトに対するそれ以降のすべての操作は 失敗します。リモートの終端はそれ以上データを(キューイングされたデータが フラッシュされた後は)受信しません。ソケットはガーベッジコレクションされた ときに自動的にクローズされます。

connect (address)
addressにあるリモートソケットにコネクトします。 (addressの形式はアドレスファミリに依存します。上記参照)

connect_ex (address)
connect(address)に似ていますが、例外を発生させる代わりに エラーインジケータを返します。操作が成功すればエラーインジケータは0で、 その他のときはerrno変数の値となります。例えば、これは非同期接続 に対して役立ちます。

fileno ()
ソケットのファイルディスクリプタ(小さい整数)を返します。 これはselect.select()で使うと便利です。

getpeername ()
ソケットが接続されているリモートアドレスを返します。これは例えば リモートIPソケットのポート番号を見つけるときに役立ちます。 (返されるアドレスの形式はアドレスファミリに依存します。上記参照) いくつかのシステムではこの関数はサポートされていません。

getsockname ()
ソケット自身のアドレスを返します。これは例えば IPソケットのポート番号を見つけるときに役立ちます。 (返されるアドレスの形式はアドレスファミリに依存します。上記参照)

getsockopt (level, optname[, buflen])
与えられたソケットオプション(Unixのmanページgetsockopt(2)参照) の値を返します。必要なシンボリック定数(SO_* 等)はこのモジュールで 定義されています。buflenが指定されなければ整数オプションが仮定され その整数値が関数から返されます。buflenが指定されれば、それは オプションを受け取るために使われるバッファの最大長を指定し、このバッファは 文字列として返されます。バッファの内容をデコードすることは呼び出し側に まかされます。(文字列にエンコードされたCの構造体をデコードする方法については 組み込みモジュールstructを参照してください。)

listen (backlog)
ソケットに対してなされる接続をlistenします。backlog引き数は キューイングされる接続要求の最大数を指定し、少なくとも1であるべきです。 この最大値はシステム依存です(通常5)。

makefile ([mode[, bufsize]])
ソケットに関連したファイルオブジェクトを返します。 (ファイルオブジェクトは2.1, ``ファイルオブジェクト''で説明されています。) ファイルオブジェクトはソケットファイルディスクリプタのdup()された バージョンを参照します。従って、ファイルオブジェクトとソケットオブジェクトは 独立してクローズされたりガーベッジコレクションされたりします。 オプションのmodebufsize引き数は組み込みopen()関数と 同じように解釈されます。

recv (bufsize[, flags])
ソケットからデータを受信します。戻り値は受信したデータを表す文字列です。 一度に受信されるデータの最大長はbufsizeで指定されます。 オプション引き数flagsの意味についてはUnixのmanページrecv(2) を参照して下さい。そのデフォルト値は0です。

recvfrom (bufsize[, flags])
ソケットからデータを受信します。戻り値は一組の(string, address)です。ここでstringは受信データを表す文字列で、addressは データを送信しているソケットのアドレスです。 オプション引き数flagsは上記recv()に対するものと同じ意味です。 (addressの形式はアドレスファミリに依存します。上記参照)

send (string[, flags])
ソケットにデータを送信します。ソケットはリモートソケットに接続されていなければ なりません。 オプション引き数flagsは上記recv()に対するものと同じ意味です。 送信されたバイト数を返します。

sendto (string[, flags], address)
ソケットにデータを送信します。ソケットはリモートソケットに接続されていては いけません。従って宛先のソケットはaddressで指定することになります。 オプション引き数flagsは上記recv()に対するものと同じ意味です。 送信されたバイト数を返します。 (addressの形式はアドレスファミリに依存します。上記参照)

setblocking (flag)
ソケットのブロッキングまたは非ブロッキングモードを設定します。 flagが0ならソケットは非ブロッキングモードに設定され、その他のときは ブロッキングモードに設定されます。最初はすべてのソケットはブロッキングモード です。非ブロッキングモードでは、recv()コールが何もデータを見い出さなかったときやsendコールがすぐにデータを捨てられないときに、error が発生します。ブロッキングモードでは、そのコールは何か処理できるまで止まります。

setsockopt (level, optname, value)
与えられたソケットオプションの値を設定します。(Unixのmanページ setsockopt(2)を参照)
必要なシンボリック定数(SO_* 等)はこのモジュールで 定義されています。その値は整数またはバッファを表す文字列が指定できます。 後者の場合文字列が適切なビットを含んでいる保証は呼び出し側にまかされます。 (Cの構造体を文字列としてエンコードする方法については 組み込みモジュールstructを参照してください。)

shutdown (how)
コネクションの一方または両半分を閉鎖します。how0なら それ以上の受信は禁止されます。how1なら それ以上の送信は禁止されます。how2なら それ以上の送受信は禁止されます。

read()またはwrite()メソッドがないことに注意して下さい。 その代わりflags引き数なしでrecv()send()を 使用して下さい。

guido@python.org