El servidor python-UDP realmente recibió su propio mensaje

El problema ya está claro, es decir, el servidor tiene contenido auto recibido. Primero, el código del servidor es el siguiente:

from socket import *
ADDR = ('127.0.0.1',8888)
server = socket(AF_INET,SOCK_DGRAM)
server.bind(ADDR)
print("服务器已经启动")
setdefaulttimeout(20)
while True:
    data,client = server.recvfrom(1024)
    print("接受客户端的消息",data.decode("utf-8"))
    if  data.decode()== 'end':
        break;
    info = input('>>>')
    server.sendto(info.encode())

server.close()

El servidor generalmente acepta primero y luego envía.

Sin embargo, el código anterior tiene un problema espontáneo y de auto recepción en el proceso de prueba con el cliente.

Mirando la información, sé que además de recibir los datos correspondientes, la función recvfrom también recibirá la dirección de la otra parte, por lo que:

    server.sendto(info.encode())

Para:

    server.sendto(info.encode(),client)

De esta manera, se aclara la dirección de los datos enviados por el servidor cada vez, y se resuelve el problema.

124 artículos originales publicados · Me gusta 24 · Visitas 10,000+

Supongo que te gusta

Origin blog.csdn.net/qq_42214953/article/details/105446992
Recomendado
Clasificación