python 3 UDPプロトコルを実装するシンプルなサーバとクライアント

1698 ワード

pythonのsocketモジュールでUDPプロトコルを実装し、簡単なサーバとクライアントを書きます.ネットワークプログラミングにおけるUDPの応用を説明するために、ここではグラフィック化を書かずに、2台のパソコンでUDPのクライアントとサービス端末を別々に開くとよい.
UDP:ユーザー・データ・レポート・プロトコルは、接続されていないプロトコル向けです.このプロトコルを使用すると、2つのアプリケーションが先に接続を確立する必要はありません.UDPプロトコルは、エラーリカバリを提供せず、データ再送信を提供できないため、このプロトコルはデータ転送のセキュリティが悪い.
クライアント
python 3はバイナリデータしか送受信できず、明示的なトランスコードが必要です
from socket import *

host  = '192.168.48.128' #          ip
port = 13141 #      10000 ,    
bufsize = 1024  #      

addr = (host,port) #     
udpClient = socket(AF_INET,SOCK_DGRAM) #     

while True:
    data = input('>>> ')
    if not data:
        break
    data = data.encode(encoding="utf-8") 
    udpClient.sendto(data,addr) #     
    data,addr = udpClient.recvfrom(bufsize) #         
    print(data.decode(encoding="utf-8"),'from',addr)

udpClient.close()

サーバ
明示的なトランスコードも必要です
from socket import *
from time import ctime

host = '' #     ip
port = 13141 #      
bufsize = 1024
addr = (host,port) 

udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr) #    

while True:
    print('Waiting for connection...')
    data,addr = udpServer.recvfrom(bufsize)  #         
    #    
    data  = data.decode(encoding='utf-8').upper()
    data = "at %s :%s"%(ctime(),data)
    udpServer.sendto(data.encode(encoding='utf-8'),addr)
    #    
    print('...recevied from and return to :',addr)

udpServer.close()

本博文の関連内容をさらに交流することを歓迎します:ブログ園の住所:http://www.cnblogs.com/AsuraDong/CSDNアドレス:http://blog.csdn.net/asuradongコミュニケーションのために手紙を送ることもできます[email protected]転載を歓迎しますが、出典を教えてください:)