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つのポートを使用することです