Pythonでのソケット(TCP)プログラミングのメモ

ソケットプログラミング(サーバ/クライアント)

  • 簡単なゲームを作る時とか、pythonでプロセス間の通信をしたくなる。そんな時のテンプレート。
  • サーバ側でIPとホストを指定してソケットを生成、クライアントからの接続を待って、接続があれば処理、これを繰り返す。
# server側
import socket
from contextlib import closing

def run_server():
    host = '127.0.0.1'
    port = 4000
    backlog = 10
    buf_size = 4096
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    with closing(sock):
        sock.bind((host, port))
        sock.listen(backlog)
        while True:
            conn, address = sock.accept()
            with closing(conn):
                msg = conn.recv(buf_size)
                print(msg)
                conn.send(msg)
    return
# クライアント側
import socket
from contextlib import closing

def send_msg():
    host = '127.0.0.1'
    port = 4000
    buf_size = 4096

    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    with closing(sock):
        sock.connect((host, port))
        sock.send(b'hello world')
        print(sock.recv(buf_size))
    return
  • ゲーム作る場合はpygameを使うことがあると思うけど、そんな場合のサンプルはこのページが参考になる。このページも参考になる(記事は13歳が書いているみたい、すごいなぁ)。