Open In App

Datagram in Python

Improve
Improve
Like Article
Like
Save
Share
Report

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.




# 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))


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.




# 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)


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.


Last Updated : 21 Jan, 2019
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads