猫型エンジニアのブログ

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

Pythonでソケットプログラミング その1

Hello,worldサーバ

 サーバではクライアントのIPアドレスを表示します。クライアントに対してはHello,worldというメッセージを送信します。

 最低限の機能しかもたないプログラムですが、サーバとしての基本的な機能はすべて含まれています。

サーバ側

#server.py
import socket

class HelloServer:
    def __init__(self, addr, port):
        self.server_sock = socket.socket()
        self.server_sock.bind((addr, port))
        self.server_sock.listen(1)

    def start(self):
        conn, addr = self.server_sock.accept()
        print "connected by", addr
        conn.send("Hello,world")
        conn.close()

server = HelloServer("localhost", 10000)
server.start()

クライアント側

#client.py
import socket
import sys

argvs = sys.argv

if len(argvs) != 3:
        print "Invalid Argument."
        print "Usage: python client.py serverAddr serverPort."
        quit()

serverAddr = argvs[1]
serverPort = int(argvs[2])

client_sock = socket.socket()
client_sock.connect((serverAddr, serverPort))
client_sock.send("hello")
data = client_sock.recv(1024)
print data
client_sock.close()

実行結果

サーバ側

# python server.py
connected by ('127.0.0.1', 58884)

クライアント側

# python client.py localhost 10000
Hello,world

次回はもう少し進んだエコーサーバを実装します。