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

PythonでのソケットUDP通信入門(コード付き)

不言
不言転載
2018-10-08 17:13:282968ブラウズ

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

UDP

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

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

PythonでのソケットUDP通信入門(コード付き)

UDP サーバー

は TCP と同様に、UDP を使用する通信相手もクライアントとサーバーに分かれます。サーバーはまずポートをバインドする必要があります。ただし、クライアントの接続を監視する必要はありません

#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 client

クライアントが 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 までご連絡ください。