Mavzu: Multicast soket asosidagi dasturni yaratish




Download 1.12 Mb.
bet3/5
Sana15.11.2023
Hajmi1.12 Mb.
#99071
1   2   3   4   5
Bog'liq
Amaliyot.ishi
Ìèíèñòðåñòâî âûñøåãî è ñðåäíåãî îáðàçîâàíèÿ ðåñïóáëèêè óçáåêèñòà, Nav A2 Grammar PowerPoint 1.1, Oling, Variant 2, 7ttFonaookoj9fJrOCnZ8hds6EvHHM5Uo28PA7pn, amerika fojiasi, o-zbekiston-respublikasida-ta-lim-sohasidagi-islohotlar, Multimedia texnologiyalari, 3-topshiriqi, 1-mustaqil ta'lim mavzulari, 10-mavzu - 2023-11-21T134612.695, Oripov K, Call for Proposals BIRD — УЗБ (лат кирил), 1 oraliq nazorat VI semester
Mavzu: Multicast soket asosidagi dasturni yaratish
Ishning maqsadi:
Talabalarda Java dasturlash tili java.net.* va java.io.* paketlari klasslaridan foydalanib TCP kliyent-server tarmoq dasturini yaratish bo‘yicha amaliy ko‘nikmalar hosil qilish.
Nazariy qism:
UDP protokoli asosida multicast dasturini yaratish. Java UDP datagramma va TCP soketlaridan foydalangan holda tarmoq ilovalarini ishlab chiqish imkonini beradi. UDP soketlari ilovalarning tarmoq orqali o‘zaro ishlashi uchun UDP protokolidan foydalanadi. UDP ulanish o‘rnatish zaruriyatisiz tez va ishonchsiz protokoldir. java.net paketi Java ilovasida UDP soketidan foydalanish imkonini beruvchi quyidagi ikki klassni o‘z ichiga oladi: 
- DatagramPacket klassi; 
- DatagramSocket klassi.
DatagramPacket va DatagramSocket klasslari. DatagramPacket obyekti tarmoq orqali uzatiladigan yoki qabul qilinadigan datagramma paketlaridan iborat bo‘lgan ma’lumotlar konteyneridir. Quyidagi konstruktorlar DatagramPacket obyektlarini initsializatsiya qilish uchun ishlatiladi:
- public DatagramPacket(byte[] buffer, int buffer_length): ma’lumotlarni byte massivida qabul qiladigan va saqlaydigan DatagramPacket obyektini yaratadi. Byte massivining bufer uzunligi buffer_length ikkinchi parametri tomonidan beriladi. 
- public DatagramPacket(byte[] buffer, int buffer_length, InetAddress address, int port): berilgan uzunlikdagi ma’lumotlar paketlarini uzatuvchi DatagramPacket obyektini yaratadi. Ma’lumotlar paketlari kompyuterga IP-adres va parametr sifatida beriladigan port nomeri bilan uzatiladi.


1.Serverni ishlatish kodlari:
#server.py

import socket


import struct

multicast_group = '224.3.29.71'


server_address = ('', 5001)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)


sock.bind(server_address)

def odd_char(text: str) -> str:


word = str(float(text)**3)
return word

# Tell the operating system to add the socket to the multicast group


# on all interfaces.
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)

while True:


data, address = sock.recvfrom(1024)

print(f'received {len(data)} bytes from {address}')


print(data)

print('sending acknowledgement to', address)


sock.sendto(f'{odd_char(data.decode())}'.encode(), address)

2.Clientni ishlatish kodlari:


#client.py

import socket


import struct

multicast_group = ('224.3.29.71', 5001)


sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)

# Set the time-to-live for messages to 1 so they do not go past the
# local network segment.
ttl = struct.pack('b', 1)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl)

try:


# Send data to the multicast group
# print(f'sending {message}')
# sent = sock.sendto(message.encode(), multicast_group)

while True:


a = input("Serverga xabar jo'nating: ").encode()
try:
sock.sendto(a, multicast_group)
data, server = sock.recvfrom(16)
except socket.timeout:
print('timed out, no more responses')
break
else:
print(f' Serverdan kelgan xabar: {data.decode()} ')

finally:
print('closing socket')


sock.close()



Download 1.12 Mb.
1   2   3   4   5




Download 1.12 Mb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Mavzu: Multicast soket asosidagi dasturni yaratish

Download 1.12 Mb.