この記事では、Python でのソケットを介した UDP 通信の概要 (例付き) を紹介します。一定の参考価値があります。必要な友人は参考にしてください。お役に立てれば幸いです。
UDP
TCP は信頼性の高い接続を確立し、通信する双方の当事者がストリームの形式でデータを送信できます。 TCP と比較すると、UDP はコネクションレス型のプロトコルです。 UDPプロトコルを使用する場合、接続を確立する必要はなく、相手のIPアドレスとポート番号がわかれば、直接データパケットを送信できます。しかし、それが届くかどうかはわかりません。
UDP プロトコルを介してデータを送信する方法を見てみましょう。 TCP と同様に、UDP を使用する通信当事者も
クライアントとサーバーに分かれます
UDP 通信を実現するためのソケット構造図
UDP サーバー
UDP を使用する通信の当事者も、TCP と同様にクライアントとサーバーに分かれます。サーバーはまずポートをバインドする必要があります。ただし、クライアントの接続を監視する必要はありません
#server import socket #创建Socket时, SOCK_DGRAM 指定了这个Socket的类型是UDP。 server = socket.socket(type=socket.SOCK_DGRAM) server.bind(('192.168.1.165',7890)) #不需要调用 listen() 方法, 而是直接接收来自任何客户端的数据 print('服务端已开启7890端口,正在等待被连接...') #recvfrom() 方法返回数据和客户端的地址与端口, 这样, 服务器收到数据后, #直接调用 sendto() 就可以把数据用UDP发给客户端 data,address = server.recvfrom(1024) print("client>>",data.decode('utf-8')) print("客户端连接的socket地址:", address) server.sendto(b'drink more water!',address) server.close()
UDP クライアント
クライアントが UDP を使用する場合は、まず UDP ベースのソケットを作成してから、 connect() を呼び出す必要はありません。sendto() を通じてサーバーにデータを直接送信します。
import socket #创建Socket时, SOCK_DGRAM 指定了这个Socket的类型是UDP。 client = socket.socket(type=socket.SOCK_DGRAM) send_data =b'hello sheenstar' client.sendto(send_data,('192.168.1.165',7890)) re_Data,address = client.recvfrom(1024) print('server>>',re_Data.decode('utf-8')) client.close()
テスト結果
2 つのコマンド ラインを使用してサーバーとクライアントを起動します。それぞれテストを行います
サーバーを開きます
UDP 通信を完了します
# #
以上がPython でのソケット UDP 通信の概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。