Working with UDP Sockets
Well, in the socket's basic tutorial you might have had a confusion that we define socket as:
S = socket.socket(socket_family, socket_type, protocol = 0)
But, in the last tutorial covering TCP sockets we defined TCP socket by merely writing S=socket.socket()
, that is without providing the socket_family and the socket_type. If we do not mention the socket_family and socket_type, then by default it is TCP
. So, if we want to create a UDP socket than we have to specify socket_family and socket_type explicitly.
For UDP socket we define:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
and, if you explicitly want to define a TCP socket:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Simple UDP Server program
This is the udpserver.py
script:
#!usr/bin/python
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # For UDP
udp_host = socket.gethostname() # Host IP
udp_port = 12345 # specified port to connect
#print type(sock) ============> 'type' can be used to see type
# of any variable ('sock' here)
sock.bind((udp_host,udp_port))
while True:
print "Waiting for client..."
data,addr = sock.recvfrom(1024) #receive data from client
print "Received Messages:",data," from",addr
Output of the above script is as follows. Keep it running and than fire up the client.py
module.
![UDP Sockets]()
Simple UDP Client
This is the udpclient.py
script:
#!usr/bin/python
import socket
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # For UDP
udp_host = socket.gethostname() # Host IP
udp_port = 12345 # specified port to connect
msg = "Hello Python!"
print "UDP target IP:", udp_host
print "UDP target Port:", udp_port
sock.sendto(msg,(udp_host,udp_port)) # Sending message to UDP server
Our udpserver.py
is up and running, so now we try to run the udpclient.py
script,
![UDP Sockets]()
And here is what happened to our server after the client sends the request:
![UDP Sockets]()
Flow Diagram of the Program
![UDP Sockets]()
So in this tutorial and the last one, we have learnt how to setup a successful Client-Server connection using both TCP socket and UDP sockets.