Working with UDP sockets
Unlike TCP, UDP doesn't check for errors in the exchanged datagram. We can create UDP client/servers similar to the TCP client/servers. The only difference is you have to specify SOCK_DGRAM
instead of SOCK_STREAM
when you create the socket object.
Let us create a UDP server. Use the following code to create the UDP server:
from socket import socket, AF_INET, SOCK_DGRAM maxsize = 4096 sock = socket(AF_INET,SOCK_DGRAM) sock.bind(('',12345)) while True: data, addr = sock.recvfrom(maxsize) resp = "UDP server sending data" sock.sendto(resp,addr)
Now, you can create a UDP client to send some data to the UDP server, as shown in the following code:
from socket import socket, AF_INET, SOCK_DGRAM MAX_SIZE = 4096 PORT = 12345 if __name__ == '__main__': sock = socket(AF_INET,SOCK_DGRAM) msg = "Hello UDP server" sock.sendto(msg.encode(),('', PORT)) data, addr = sock.recvfrom(MAX_SIZE) print("Server says:") print(repr(data))
In the preceding...