Datagram in Python

Datagram is a type of wireless communication between two endpoints and it requires the ip address and port number to establish connection. Datagram uses UDP(User Datagram Protocol), it converts user data into small packets or chunks of data so that it can be sent over a network in a continuous manner. In UDP type of connection data packets have no records at the sender’s end, it just sends by the user then it’s upon receiver that it wants to accept data packets or not. UDP type of connection we use in video conferencing or in video calls.

Let’s learn how to send some data on localhost network and receive the same data as a receiver on the same machine to demonstrate the use of datagram.

To know the IP configurations of your computer, use this command on terminal:

ipconfig

Code #1: For sender’s end.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing socket module
import socket
  
UDP_IP = "localhost"
UDP_PORT = 8080
MESSAGE = "GeeksforGeeks"
  
print ("message:", MESSAGE)
  
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))

chevron_right


Output:

message: Geeksforgeeks

Explanation:

  • Specify your IPv4 address in the place of UDP_IP and remember port number 8080 is your localhost port number so you need to specify the same.
  • socket.socket() uses AF_INET in order to use the IPv4 address of your system and SOCK_DGRAM is a type of protocol that we are using for communication.
  • Use sock object to call function sendto(), then pass argument of tuple containing IP address and port number.

Step #2: At the receiver’s end.

filter_none

edit
close

play_arrow

link
brightness_4
code

# importing socket module
import socket
  
UDP_IP = "localhost"
UDP_PORT = 8080
  
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((UDP_IP, UDP_PORT))
  
while True:
    # buffer size is 1024 bytes
    data, addr = sock.recvfrom(1024
    print ("Received message:", data)

chevron_right


Output:

Received Message: b'Geeksforgeeks'

Explanation:

  • We need to specify the localhost IPaddress in UDP_IP and use the socket.socket() function same as above.
  • bind the parameter to the socket object so that anything receive at these port address will we catch at this end. In the loop, define the buffer size as 1024, As message is not big, it is sufficient buffer size.


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.