Kompyuter injiniring fakulteti 716-20 guruh talabasi mamatqulov nodirbekning




Download 409,8 Kb.
bet3/5
Sana20.02.2024
Hajmi409,8 Kb.
#159504
1   2   3   4   5
Bog'liq
2-dedline Tarmoqni dasturlash

Topshirish.



  1. Multicast soket asosidagi dastur haqida ma’lumotlar to’plash.

  2. Fayllarni ko’chirish haqida ma’lumotlar to’plash.


Multicast soketlar, tarmoqda ma'lum bir guruhga ma'lumotlarni bir necha qabulchiga bir nechta kompyuterlarga bir vaqtning o'zida yuborishga mo'ljallangan. Bu, uni "multicast" deb nomlangan. Multicast ma'lumotlar, qabul qiluvchilar shaxsiy IP manzillari orqali identifikatsiya qilinadi va ular faqat o'zlariga qarab yuboriladilar.
Dasturlar multicast soketlar orqali ma'lumot almashish uchun multicast soketlaridan foydalanishadi. Ushbu dasturlar multicast IP manzillariga yuborilgan ma'lumotlarni qabul qilish va uni kerakli amallarni bajarish uchun tahlil qilishlari mumkin.
Ushbu dasturlar umumiy tarmoq protokollari, masalan, Internet Protocol (IP), UDP (User Datagram Protocol) yoki TCP (Transmission Control Protocol) asosida ishlaydilar. Multicast ma'lumotlarni o'zaro almashishning xosiyatlaridan biri hamda undan foydalanish muhimiyati, ma'lumotlarni bir qator qabul qiluvchilarga yuborish imkoniyatini berishi va tarmoqdagi trafikni kamaytirishi
Tabii, multicast soketlardan foydalanish dasturlar, ma'lumotni bir guruhga bir necha qabulchiga yuborishga mo'ljallangan. Misol uchun, real-time audio yoki video streaming dasturlari, tarmoqda bir qatordan ko'p qabulchilarga to'g'ri tarqatiladi. Bu, multicast soketlardan foydalanishga misol bo'lishi mumkin.
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 409,8 Kb.
1   2   3   4   5




Download 409,8 Kb.

Bosh sahifa
Aloqalar

    Bosh sahifa



Kompyuter injiniring fakulteti 716-20 guruh talabasi mamatqulov nodirbekning

Download 409,8 Kb.