7.2.2 例

ここではTCP/IPプロトコルを使った2つの最小限の例題プログラムを示します。 それが受信したすべてのデータをエコーバック(1クライアントのみに サービスを提供)するサーバとそれを使うクライアントです。
注:サーバはsocket(), bind(), listen(), accept()(複数のクライアントをサービスするためにはaccept() をくり返す必要があるでしょう)という順番で実行させなければなりません。 一方クライアントはsocket(), connect()という順番で実行する だけで十分です。 また、サーバはlistenしているソケットに対してではなく、accept()により返された新しいソケットに対してsend()/recv()することにも注意して下さい。

# Echo server program
from socket import *
HOST = ''                 # ローカルホストを意味するシンボリック名
PORT = 50007              # 任意の非特権サーバ
s = socket(AF_INET, SOCK_STREAM)
s.bind(HOST, PORT)
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()

# Echo client program
from socket import *
HOST = 'daring.cwi.nl'    # リモートホスト
PORT = 50007              # サーバで使われているのと同じポート
s = socket(AF_INET, SOCK_STREAM)
s.connect(HOST, PORT)
s.send('Hello, world')
data = s.recv(1024)
s.close()
print 'Received', `data`

参考:

モジュール SocketServer   (ネットワークサーバの記述を単純にするクラス)


guido@python.org