ここでは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 (ネットワークサーバの記述を単純にするクラス)