226:TCPサーバを作る
socket
socket モジュールを使用した、受信データをそのまま返すサーバです。
import socket
host = socket.gethostbyname('localhost')
port = 49152
so = socket.socket()
so.bind((host, port))
so.listen(1)
while True:
conn, address = so.accept()
print address
data = conn.recv(8192)
print data
conn.send(data)
conn.close()
このサーバにアクセスするクライアントの例です。
import socket
host = socket.gethostbyname('localhost')
port = 49152
so = socket.socket()
so.connect((host, port))
so.send('Hello')
data = so.recv(8192)
so.close()
print data
SocketServer?
SocketServer? モジュールを使用すると、よりサーバを作りやすくなります。 bind, listen, accept といったシステムコールが隠蔽されるため、処理内容の実装に専念できます。
import socket
import SocketServer
class EchoHandler(SocketServer.StreamRequestHandler):
def handle(self):
data = self.request.recv(8192)
print data
self.request.send(data)
self.request.close()
host = socket.gethostbyname('localhost')
port = 49152
server = SocketServer.TCPServer((host, port), EchoHandler)
server.serve_forever()