Pythonでソケットプログラミング その2
エコーサーバ
クライアントからの入力をそのままクライアントに送信するエコーサーバのプログラムです。前回との違いはサーバ側とクライアント側それぞれでwhile文でループにしていることです。
サーバ側
import socket class EchoServer: def __init__(self, addr, port): self.server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.server_sock.bind((addr, port)) self.server_sock.listen(1) def start(self): conn, addr = self.server_sock.accept() while True: print "connected by", addr data = conn.recv(1024) if not data: break conn.send(data) conn.close() server = EchoServer("192.168.11.11", 10000) server.start()
クライアント側
serverAddr = "192.168.11.11" serverPort = 10000 client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client_sock.connect((serverAddr, serverPort)) while True: clientInput= raw_input(' please input > ') client_sock.send(clientInput) response = client_sock.recv(1024) print response client_sock.close()
実行結果
サーバ側
# python server.py connected by ('192.168.11.5', 38599) connected by ('192.168.11.5', 38599) connected by ('192.168.11.5', 38599)
クライアント側
# python client.py please input > test test please input > test2 test2 please input > test3 test3
次回はサーバにマルチプロセス機能を実装します。