ホームページ  >  記事  >  バックエンド開発  >  Python でのソケット UDP 通信の概要 (例付き)

Python でのソケット UDP 通信の概要 (例付き)

不言
不言転載
2018-10-13 16:43:434335ブラウズ

この記事では、Python でのソケットを介した UDP 通信の概要 (例付き) を紹介します。一定の参考価値があります。必要な友人は参考にしてください。お役に立てれば幸いです。

UDP

TCP は信頼性の高い接続を確立し、通信する双方の当事者がストリームの形式でデータを送信できます。 TCP と比較すると、UDP はコネクションレス型のプロトコルです。 UDPプロトコルを使用する場合、接続を確立する必要はなく、相手のIPアドレスとポート番号がわかれば、直接データパケットを送信できます。しかし、それが届くかどうかはわかりません。

UDP プロトコルを介してデータを送信する方法を見てみましょう。 TCP と同様に、UDP を使用する通信当事者も
クライアントとサーバーに分かれます
UDP 通信を実現するためのソケット構造図

Python でのソケット 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 つのコマンド ラインを使用してサーバーとクライアントを起動します。それぞれテストを行います
サーバーを開きます

Python でのソケット UDP 通信の概要 (例付き)

UDP 通信を完了します

Python でのソケット UDP 通信の概要 (例付き)# #

以上がPython でのソケット UDP 通信の概要 (例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はsegmentfault.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。