猫型エンジニアのブログ

プログラム/ネットワーク系の技術関連をまとめたページです 

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

次回はサーバにマルチプロセス機能を実装します。