前回の記事では、Pythonを使用してソケット通信のサーバーを構築する方法について学びました。
今回はその続きとして、クライアント側の実装に焦点を当てます。特に、Windows環境での実装について詳しく解説します。
目次
接続先のクライアント
今回、接続先の通信相手となるは、Raspberry Pi で動作するLinux上のPythonで記述されたサーバプログラムです。
サーバ側のコードについては、以下の記事で解説しています。
Djangoでマスターするデータベース設定とマイグレーションの基本
DjangoはPythonでWebアプリケーションを開発するための強力なフレームワークです。しかし、その力を最大限に引き出すためには、設定やマイグレーションの仕組みを理解す…
ソケット通信の概要についてもこちらの記事で解説していますので、あらかじめ確認しておいてください。
ライブラリのインストール
Pythonのソケットプログラミングで使用する主なライブラリは標準ライブラリに含まれているsocket
ですので、特別にインストールする必要はありません。
作成したPythonコード
今回作成するのはクライアント側のWindowsPCで動作するプログラムです。
待機状態のサーバーに対しメッセージを送信し、サーバー側から応答があったらその内容を表示するプログラムです。
- ソケットオブジェクトの作成:
socket
モジュールをインポートした後、socket.socket()
関数を用いてソケットオブジェクトを作成します。 - サーバーのホストとポートの設定: サーバーのIPアドレス(例:127.0.0.1)とポート番号(例:12345)を設定します。
- サーバーへの接続:
connect()
メソッドを用いて、設定したホストとポート番号でサーバーに接続します。 - テストメッセージの送信:
send()
メソッドを用いて、エンコードしたテストメッセージ(”テストメッセージ”)をサーバーに送信します。 - サーバーからの応答の受信:
recv()
メソッドを用いて、サーバーからの応答メッセージを受信します。 - 受信データのデコード: 受信したデータはバイト形式なので、
decode()
メソッドを用いて文字列にデコードします。 - ソケットのクローズ: 通信が終了したら、
close()
メソッドを用いてソケットを閉じます。
作成した全体のソースコード
import socket
# ソケットオブジェクトの作成
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# サーバーのホストとポート番号を指定
host = "127.0.0.1"
port = 12345
# サーバーに接続
client_socket.connect((host, port))
print("サーバーに接続しました。")
# テストメッセージを送信
client_socket.send("テストメッセージ".encode('utf-8'))
print("テストメッセージを送信しました。")
# サーバーからの応答メッセージを受信
data = client_socket.recv(1024).decode('utf-8')
print(f"サーバーからの応答: {data}")
# ソケットを閉じる
client_socket.close()
まとめ
この記事で、PythonとWindowsを使用してソケット通信のクライアントを構築する方法について詳しく解説しました。
サーバーとの接続からデータの送受信までの手順を一つ一つ確認しました。
これでサーバー側とクライアント側の基本的なソケット通信の知識が身についたはずです。今後はこの基礎を活かして、さまざまなネットワークプログラミングに挑戦してみてください。
コメント