Pythonのスレッド+ UDP

1、送信済み

DEF :(S)SEND_DATA
     ながら、真:
         #の印刷( 'オープン送信データのスレッド--------') 
        s.sendto(' STATE_CODE_ML:0:機械学習モジュールの正常な動作' .encode(" UTF- 8 ')、(' 127.0.0.1 '、8002 ))
        time.sleep( 1)

図2に示すように、受信

DEF (S)recv_data:
     一方TRUE:
         #1 印刷( 'スレッドデータ受信を開く--------') 
        データ= s.recvfrom(1024 プリント' {} {} ' .format(DATA [0 ] .decode(' UTF-8 ')、DATA [1]))

ノートのrecvfrom、ブロックする関数を受けていない場合。

1024はポートではなく、サイズが1024のバイトを受信し、[これ]は、他の言語で同じではありません

3、コール

もし __name__ == " __main__ " 
    CFG = GET_CONFIG()
    address_rcv =(cfg.get(' 一般'' UDP_IP ')、INT(cfg.get(' 一般'' UDP_RCV_PORT ' )))
    udp_rcv = ソケット(AF_INET 、SOCK_DGRAM)
    udp_rcv.bind(address_rcv)
    thread_recv = threading.Thread(目標= recv_data、引数= (udp_rcv))
    thread_recv.start()
   
    address_send =(cfg.get(' 一般'' UDP_IP ')、INT(cfg.get(' 一般'' UDP_SEND_PORT ' )))
    udp_send = ソケット(AF_INET、SOCK_DGRAM)
    udp_send.bind(address_send)
    thread_send = threading.Thread(対象= SEND_DATA、引数= (udp_send))
    thread_send.start()
    heart_beat(udp_send)

パラメータはそうコンマを追加するために、タプルの形式である必要があることに注意してください。

機能を使用して、データ・サイクルを送信する必要がある場合、あなたは同じソケットを使用することはできませんので、ブロックすることがあり受け取るので、私はここにいる2つのソケットに対応した2つのポートを使用することです

おすすめ

転載: www.cnblogs.com/judes/p/12598549.html