Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのデータグラム


データのチャンクは、ユーザーデータグラムプロトコルまたはUDPプロトコルを使用してクライアントとサーバー間を移動します。通信する2つのエンドポイントには、通信を確立するためのIPアドレスとポート番号が必要です。一方のエンドポイントは送信者と呼ばれ、もう一方は受信者と呼ばれます。このプロトコルでは、送信者は送信されたパケットを追跡せず、すべてのパケットを受け入れるかどうかは受信者次第です。

送信者プログラム

以下のPythonプログラムは、ソケットモジュールを使用して送信者のプログラムを作成します。 IPアドレスとポートの変数を宣言します。次に、それにメッセージを追加します。 sendto()は、メッセージをIPアドレスおよびポート番号と組み合わせるために使用されます。

import socket

UDP_IP = "localhost"
UDP_PORT = 5050
MESSAGE = "Hello UDP! "

print ("Sent Message: ", MESSAGE)

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))

出力

上記のコードを実行すると、次の結果が得られます-

Sent Message: Hello UDP!

受信者プログラム

同様に、送信者プログラムによって送信されたメッセージを受信する受信者プログラムを作成します。以下のプログラムのメッセージのサイズは1024バイトに制限されています。 bind()関数は、IPとポートを受信したデータにバインドします。

import socket

UDP_IP = "localhost"
UDP_PORT = 5050

s= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((UDP_IP, UDP_PORT))

while True:
   # buffer size is 1024 bytes
   data, addr = sock.recvfrom(1024)
   print("Received message:", data)

出力

上記のコードを実行すると、次の結果が得られます-

Received message: Hello UDP!

  1. Pythonの低レベルネットワークインターフェース(ソケット)

    Pythonの標準ライブラリの「socket」モジュールは、サーバーとクライアントマシンがオペレーティングシステム上でソケットエンドポイントを使用して通信する方法を定義します。 socket APIには、コネクション型ネットワークプロトコルとコネクションレス型ネットワークプロトコルの両方の関数が含まれています。 ソケットは、双方向通信リンクのエンドポイントです。 IPアドレスとポート番号が特徴です。接続を開始するには、両端のソケットを適切に構成する必要があります。これにより、着信メッセージをリッスンし、クライアントサーバー環境で応答を送信できるようになります。 socketモジュールのso

  2. Pythonソケットエラー48を修正

    ソケットエラー48は、プロセスがすでに使用されているポートに自分自身をバインドしようとしたときにトリガーされるPythonエラーです。 「socket.error:[Errno48]アドレスはすでに使用されています」エラーの原因は何ですか? 簡単な調査の結果、原因は次のとおりであることがわかりました。 ポートにバインドされたプロセス: サーバー上にプロセスが作成されるたびに、インターネットとの通信にポートが使用されます。ポートは、一度に1人のゲストを楽しませることができるホストのようなものです。ただし、ポートを指定しない場合、サーバーはデフォルトのポートでポートを作成するだけです。次回