Python で UDP パケットを送信する

Zeeshan Afridi 2023年6月21日
Python で UDP パケットを送信する

今日は、ユーザー データグラム プロトコル (UDP) について学び、Python プログラミングを使用して UDP パケットを送信する方法を確認します。

Python で UDP パケットを送信する

ユーザー データグラム プロトコル (UDP) と TCP/IP の動作は異なります。 すべてのデータが適切な順序で転送されることを保証するストリーム指向のプロトコルである TCP とは対照的に、UDP はメッセージ指向のプロトコルです。

UDP は長時間続く接続を必要としないため、UDP ソケットのセットアップは少し簡単です。 一方、TCP とは異なり、UDP メッセージの配信は保証されず、単一のパケット内に収まる必要があります。

Python でそれを行うにはどうすればよいでしょうか。 Python には、インポートする必要がある socket という組み込みモジュールがあります。

import socket

socket モジュールをインポートしたら、UDP メッセージの送信先のポート番号と IP アドレスを指定する必要があります。

IP = "127.0.0.1"
PORT = 5003
Message = "Info"

これらのいくつかの変数を記述したので、UDP メッセージをサーバーに送信するための socket を構築する時が来ました。

Sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
Sock.sendto(Message, (IP, PORT))

2つのファイルを作成する必要があります。 client.pyserver.py。 クライアント ファイルとサーバー ファイルの両方が、対応するサーバー システムとクライアント システムに存在する必要があります。

クライアント プログラムが作成されたら、次のステップはサーバー プログラムを作成することです。サーバー プログラムは、UDP パケットの指定された IP アドレスとポート番号を監視します。

クライアントの Python スクリプトは、このサーバーの前に実行する必要があることに注意してください。そうしないと、クライアントの Python スクリプトが失敗します。

socket モジュールをインポートし、IP アドレスとポート番号を指定したら、クライアント アプリケーションで作成した socket に正確に似た別の socket を作成できます。

Server.py ファイルのコード例:

import socket

IP = "127.0.0.1"
PORT = 5003
MESSAGE = "The meeting is From 10 pm."

print(f"sending information")
print(f"{MESSAGE} to {IP}:{PORT}")


sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(MESSAGE.encode(), (IP, PORT))

出力:

sending information
The meeting is From 10 pm. to 127.0.0.1:5003

また、サーバー ソケット を構築したら、スクリプトが終了するまで、この接続を継続的にリッスンするようにスクリプトを維持するためのコードを記述する必要があります。

以下に示すように、単純な while ループの形式を取ります。

Client.py ファイルのコード例:

import socket

IP = "127.0.0.1"
PORT = 5003

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((IP, PORT))
print(f"start listening to {IP}:{PORT}")
while True:
    data, addr = sock.recvfrom(1024)
    print(f"received message: {data}")

出力:

start listening to 127.0.0.1:5003
received message: The meeting is From 10 pm.

このようにして、Python で UDP パケットを送信できます。

著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn