hilo pitón + udp

1, enviados

DEF la send_data (S,):
     el tiempo Verdadero:
         # impresión ( 'abierto hilo de transmisión de datos --------') 
        s.sendto ( ' STATE_CODE_ML: 0: funcionamiento normal de la máquina módulo de aprendizaje ' .encode ( " UTF . 8 ' ), ( ' 127.0.0.1 ' , 8002 )) 
        el time.sleep ( . 1)

2, la receptora

DEF recv_data (S,):
     los mientras Verdadero:
         # ( 'datos abertura roscada que reciben --------') de impresión 
        de datos = s.recvfrom (1024 )
         Imprimir ( ' {} {} ' .formato (Data [0 ] .decode ( ' UTF. 8 ' ), Data [. 1]))

Nota recvfrom, si la función bloqueará no recibidos;

1024 no es un puerto, pero recibe 1024 bytes de tamaño, y [esto] no es lo mismo en otros idiomas

3, llamada

si  __name__ == " __main__ " : 
    cfg = GET_CONFIG () 
    address_rcv = (cfg.get ( ' general ' , ' UDP_IP ' ), int (cfg.get ( ' general ' , ' UDP_RCV_PORT ' ))) 
    udp_rcv = socket (AF_INET , SOCK_DGRAM) 
    udp_rcv.bind (address_rcv) 
    thread_recv = threading.Thread (target = recv_data, args = (udp_rcv,)) 
    thread_recv.start () 
   
    address_send = (cfg.get (' General ' , ' UDP_IP ' ), int (cfg.get ( ' generales ' , ' UDP_SEND_PORT ' ))) 
    udp_send = socket (AF_INET, SOCK_DGRAM) 
    udp_send.bind (address_send) 
    thread_send = threading.Thread (objetivo = SEND_DATA, args = (udp_send,)) 
    thread_send.start () 
    Heart_Beat (udp_send)

Tenga en cuenta que los parámetros tienen que ser un formato tupla, por lo que añadir una coma;

Dado que la función de recepción puede bloquear, por lo que si necesita enviar ciclo de datos, no se puede utilizar el mismo socket, estoy aquí es utilizar los dos puertos que corresponden a dos sockets

Supongo que te gusta

Origin www.cnblogs.com/judes/p/12598549.html
Recomendado
Clasificación