UDP Client/Server Socket in Python

前端 未结 3 561
自闭症患者
自闭症患者 2020-12-04 20:23

I\'m new to python and sockets and am trying to write an echoing client/server socket. I have written the server so that 30% of the packets are lost. I programmed my client

3条回答
  •  萌比男神i
    2020-12-04 20:55

    I tested your code, and it works as expected on my machine. Your issue might not be your code. It could be a firewall or something else blocking all the packets on the loopback interface (127.0.0.1). Depending on your operating system, try testing with a packet monitor like Wireshark.

    Also, here are a few suggestions on how to improve your code to be more Pythonic:

    Server

    import random
    import socket
    
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    server_socket.bind(('', 12000))
    
    while True:
        rand = random.randint(0, 10)
        message, address = server_socket.recvfrom(1024)
        message = message.upper()
        if rand >= 4:
            server_socket.sendto(message, address)
    

    Client

    import time
    import socket
    
    for pings in range(10):
        client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        client_socket.settimeout(1.0)
        message = b'test'
        addr = ("127.0.0.1", 12000)
    
        start = time.time()
        client_socket.sendto(message, addr)
        try:
            data, server = client_socket.recvfrom(1024)
            end = time.time()
            elapsed = end - start
            print(f'{data} {pings} {elapsed}')
        except socket.timeout:
            print('REQUEST TIMED OUT')
    

提交回复
热议问题