กลุ่มของข้อมูลจะย้ายระหว่างไคลเอนต์และเซิร์ฟเวอร์โดยใช้ User Datagram Protocol หรือ UDP protocol ปลายทางการสื่อสารทั้งสองต้องมีที่อยู่ IP และหมายเลขพอร์ตเพื่อสร้างการสื่อสาร ปลายทางหนึ่งเรียกว่าผู้ส่งและอีกจุดหนึ่งเรียกว่าผู้รับ ในโปรโตคอลนี้ ผู้ส่งจะไม่ติดตามแพ็กเก็ตที่ส่ง และขึ้นอยู่กับผู้รับที่จะยอมรับหรือไม่รับแพ็กเก็ตทั้งหมด
โปรแกรมผู้ส่ง
โปรแกรมหลามด้านล่างใช้โมดูลซ็อกเก็ตเพื่อสร้างโปรแกรมของผู้ส่ง เราประกาศตัวแปรสำหรับที่อยู่ IP และพอร์ต จากนั้นเพิ่มข้อความลงไป sendto() ใช้เพื่อรวมข้อความกับที่อยู่ IP และหมายเลขพอร์ต
ตัวอย่าง
import socket UDP_IP = "localhost" UDP_PORT = 5050 MESSAGE = "Hello UDP! " print ("Sent Message: ", MESSAGE) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.sendto(bytes(MESSAGE, "utf-8"), (UDP_IP, UDP_PORT))
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Sent Message: Hello UDP!
โปรแกรมรับสัญญาณ
ในทำนองเดียวกัน เราสร้างโปรแกรมรับซึ่งจะได้รับข้อความที่ส่งโดยโปรแกรมผู้ส่ง ขนาดของข้อความในโปรแกรมด้านล่างถูกจำกัดไว้ที่ 1024 ไบต์ ฟังก์ชัน bind() ผูก IP และพอร์ตกับข้อมูลที่ได้รับ
ตัวอย่าง
import socket UDP_IP = "localhost" UDP_PORT = 5050 s= socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((UDP_IP, UDP_PORT)) while True: # buffer size is 1024 bytes data, addr = sock.recvfrom(1024) print("Received message:", data)
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
Received message: Hello UDP!