python udp如何實現同時收發信息

udp實現同時收發信息

import socket
import threading
def fa(udp_socket,recv_ip,recv_data):
    # 3 發送信息
    while True:
        data = input("輸入你要發送的數據:")
        udp_socket.sendto(data.encode("utf-8"),(recv_ip,recv_data))
def shou(udp_socket):
    # 4接收數據
    while True:
        user_data = udp_socket.recvfrom(1024)
        a = user_data[0]
        b = user_data[1]
        print("用戶:%s發來的數據為:%s" % (str(b), a.decode("utf-8")))
def main():
    # 1創建套接字
    udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    # 2 綁定本地信息
    udp_socket.bind(("",7892))
    recv_ip = input("輸入對方ip:")
    recv_data = int(input("輸入對方端口:"))
    t1 = threading.Thread(target=fa,args=(udp_socket,recv_ip,recv_data))
    t2 = threading.Thread(target=shou,args=(udp_socket,))
    t1.start()
    t2.start()
if __name__ == '__main__':
    main()

結果:

在這裡插入圖片描述

python做發送udp工具

import socket
from time import sleep
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
nCnt = 0
while True:
    if nCnt >5 :
        sleep(2)
        nCnt = 0
    for data in [b'$123;CLEARHOLE;Product_id,Barcode_Cnt,0,NG,05&,\r', 
            ]:
        # 發送數據:
        s.sendto(data, ('127.0.0.1', 10000))
        # 接收數據:CLEARHOLE
        #print(s.recv(1024).decode('utf-8'))
        sleep(0.5)
    nCnt += 1
s.close()

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: