Ushbu kod UDP (User Datagram Protocol) soket orqali tarmoqda ma'lumot almashish imkonini beruvchi dastur. Ushbu dastur, IP manzili va port raqami bilan bog'langan soketni yaratadi va ma'lumotlarni olish hamda javob berish bilan shug‘ullanadi.
Quyida batafsil tushuntirish:
import socket
socket
moduli soket orqali tarmoqda ma'lumot almashish imkonini beradi. Bu yerda soket UDP orqali ishlatiladi.
def main():
print("Logs from your program will appear here!")
Bu yerda asosiy funksiya boshlangan va print
yordamida loglar chop qilinmoqda. Bu loglar sizning testlaringiz yoki dastur ishlashi paytida ko'rish uchun foydali.
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(("127.0.0.1", 2053))
socket.AF_INET
: Bu IPv4 protokolida ishlatiladigan tarmoq oilasini bildiradi (IP manzil).
socket.SOCK_DGRAM
: Bu UDP protokolini anglatadi. UDP orqali ma'lumotlar "datagram" shaklida yuboriladi, ya'ni ular o'z-o'zicha mustaqil bo'ladi.
bind
: Soketni o'z IP manzili va porti bilan bog'lash. Bu yerda IP manzil "127.0.0.1" (localhost) va port raqami 2053.
while True:
try:
buf, source = udp_socket.recvfrom(512)
response = b""
udp_socket.sendto(response, source)
except Exception as e:
print(f"Error receiving data: {e}")
break
recvfrom(512)
: Bu soket orqali kelayotgan ma'lumotlarni qabul qiladi, bu yerda 512 baytgacha ma'lumot olinishi mumkin. buf
olingan ma'lumotni o'zida saqlaydi, source
esa ma'lumot yuborilgan manzilni saqlaydi (IP manzili va port).
sendto(response, source)
: Bu qabul qilingan manzilga (source)
javob (response)
yuboradi. Bu yerda response
bo'sh bo‘lib, hech qanday ma'lumot qaytarilmayapti.
except Exception as e
: Agar biror xato yuz bersa, dasturning ishlashi to‘xtatiladi va xato haqida ma'lumot chop qilinadi.
5. Natija: Dastur UDP orqali kelgan ma'lumotni qabul qiladi, ammo bu dasturning hozirgi versiyasi hech qanday javob bermayapti (bo'sh respons
e yuborilyapti). Agar kerak bo'lsa, siz bu yerda turli xil javoblarni ishlab chiqishingiz mumkin.
Dastur faqat lokal (localhost) tarmoqda ishlaydi, chunki u "127.0.0.1"
IP manzilida bog'langan va faqatgina 2053-port
orqali ma'lumotlarni qabul qiladi.