ここではソケットを使ってシンプルなサーバー・クライアント通信のプログラムを作ってみます。次のような仕様になっています。
# File: servsample.py
#
# エコーサーバー
# https://docs.python.org/ja/3/library/socket.html
#
import socket
HOST = '0.0.0.0'# すべてのIPアドレスからの接続を許す
PORT = 54321 # ポート番号 / ダイナミック・ポートの領域を利用
# with構文を使って処理を閉じる書き方
# ソケットでTCP/IPを開く
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT)) # ソケットをポートにバインド
s.listen(1) # 接続開始
conn, addr = s.accept() # 接続待ち
with conn:
print('Connected by', addr)
while True: # 無限ループ
data = conn.recv(1024)
if not data: break
conn.sendall(data)
# File: cliesample.py
# エコー クライアント
# https://docs.python.org/ja/3/library/socket.html
import socket
HOST = 'localhost' # ローカルホストを指定
PORT = 54321 # サーバーのポートを指定
# with構文を使って処理を閉じる
# ソケットでTCP/IPを開く
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT)) # ホストとポートを指定して相手に接続
s.sendall('こんにちは世界'.encode('utf-8')) # データを送る / UTF-8にエンコード
data = s.recv(1024) # 受信
print('Received:',data.decode('utf-8')) # UTF-8で出力