Mavzu: Soketlar
Reja:
I.Kirish.
Soketlar haqida umumiy tushuncha.
II.Asosiy qism.
1.Soket sinfi
2.TCP soketlarida mijoz-server dasturi
3.UDP bilan ishlash uchun soketlardan foydalanish
III.Xulosa.
IV.Foydalanilgan adabiyotlar.
I.Kirish.
1.1. Soketlar haqida umumiy tushuncha.
Soket dasturiy ta’minoti server va mijoz kompyuterlarini ulaydi. Sockets dasturlash -bu TCP/IP tarmoqlarida aloqaning asosiy texnologiyasi.Soket tarmoqda ishlaydigan ikkita dastur o’rtasida ikki tomonlama aloqaning bittasi. Soket, boshqa soket bilan ma’lumotni yuborish va qabul qilish uchun ikki tomonlama aloqa uchi nuqtasini taqdim etadi. Soket ulanishlari an’anaviy tarzda ikki xil kompyuter o’rtasida mahalliy tarmoq yoki internet orqali ishlaydi, biroq ular bilan kompyuterda ishlash jarayonida ham foydalanilishi mumkin.
Soket va manzillar. TCP/IP tarmoqlaridagi soketning so’nggi nuqtalari har bir IP adresining va TCP/IP port raqamining kombinatsiyasi bo’lgan yagona manzilga ega. Socket ma’lum bir port raqamiga ulanganligi sababli , TCP qavati unga yuborilgan ma’lumotlarni oladigan ilovani identifikatsiya qilishi mumkin. Yangi uyani yaratishda , kutubxona avtomatik ravishda o’sha qurilmada noyob port raqamini ishlab chiqaradi. Dasturchi ma’lum bir hollarda port raqamlarini ham ko’rsatishi mumkin.
Soket kutubxonalari. To’g’ridan-to’gri past darajadagi socket API-larni kodlash o’rniga , tarmoq dasturchilari odatda soket kutubxonalaridan foydalanadilar. Odatda ishlatiladigan ikkita kutubxona Linux/Unix tizimlari va Windows uchun WinSock uchun Berkeley Sockets.
Open(), read(), write() va close() kabi fayllar bilan ishlaydigan dasturchilarga o’xshash API funktsiyalari to’plamini taqdim etadi.
I. Soketlar sinfi
Soketlar TCP va UDP internet bilan ishlashning markazidir. .NET tarmog'ida rozetkalar System.NET.Sockets.Socket sinfi bilan ifodalanadi , bu tarmoq orqali xabarlarni qabul qilish va jo'natish uchun past darajadagi interfeysni ta'minlaydi.
Ushbu sinfning asosiy xususiyatlarini ko'rib chiqaylik:
AddressFamily: Soket tomonidan ishlatiladigan barcha manzillarni qaytaradi. Bu xususiyat bir xil nomdagi AddressFamily ro'yxatida belgilangan qiymatlardan birini ifodalaydi . Ro'yxat 18 xil ma'noni o'z ichiga oladi, eng ko'p ishlatiladiganlari:
InterNetwork: IPv4 manzili
InterNetworkV6: IPv6 manzili
Ipx: IPX yoki SPIntX manzili
NetBios: NetBios manzili
Available: o'qilishi mumkin bo'lgan ma'lumotlar miqdorini qaytaradi
Connected: rozetka masofaviy xostga ulangan bo'lsa, rost qiymatini qaytaradi
LocalEndPoint: rozetka ishga tushirilgan va ma'lumotlarni qabul qiladigan mahalliy nuqtani qaytaradi
ProtocolType: Soket tomonidan ishlatiladigan protokolni ifodalovchi ProtocolType sanab qiymatlaridan birini qaytaradi . Quyidagi mumkin bo'lgan qiymatlar mavjud:
Icmp
IcmpV6
Idp
Igmp
IP
IPSecAuthenticationHeader (IPv6 AH sarlavhasi)
IPSecEncapsulatingSecurityPayload (IPv6 ESP sarlavhasi)
IPv4
IPv6
IPv6DestinationOptions (IPv6 Destination Options sarlavhasi)
IPv6FragmentHeader (IPv6 fragment sarlavhasi)
IPv6HopByHopOptions (Sarlavhasi IPv6 Hop by Hop Options)
IPv6NoNextHeader (IPv6 Keyingi sarlavha yo'q)
IPv6RoutingHeader (IPv6 marshrutlash sarlavhasi)
Ipx
ND
Pup
Raw
Spx
SpxII
Tcp
Udp
Unknown (noma'lum protokol)
Unspecified (aniqlanmagan protokol)
Har bir qiymat mos keladigan protokolni ifodalaydi, lekin eng ko'p ishlatiladigan Tcp va Udp.
RemoteEndPoint: rozetka ulangan masofaviy xost manzilini qaytaradi
SocketType: rozetka turini qaytaradi. SocketType ro'yxatidagi qiymatlardan birini ifodalaydi :
Dgram: Soket Udp protokoli yordamida datagrammalarni qabul qiladi va yuboradi. Ushbu rozetka turi protokol turi - Udp va qiymat bilan birgalikda ishlaydi AddressFamily.InterNetwork
Raw: rozetka asosiy transport protokoliga kirish huquqiga ega va xabarlarni uzatish uchun ICMP va IGMP kabi protokollardan foydalanishi mumkin.
Rdm: Soket uzoqdagi xostlar bilan doimiy aloqa o'rnatmasdan bog'lanishi mumkin. Agar rozetka orqali yuborilgan xabarlarni yetkazib bo'lmasa, rozetka bu haqda bildirishnoma oladi.
Seqpacket: Doimiy ulanish bilan ishonchli ikki tomonlama ma'lumotlarni uzatishni ta'minlaydi
Stream: Doimiy ulanish bilan ishonchli ikki tomonlama ma'lumotlarni uzatishni ta'minlaydi. Aloqa uchun TCP protokoli ishlatiladi, shuning uchun bu rozetka turi Tcp protokoli turi va qiymati bilan bog'langan.AddressFamily.InterNetwork
Unknown: NetBios manzili
Soket ob'ektini yaratish uchun siz uning konstruktorlaridan birini ishlatishingiz mumkin. Masalan, TCP protokolidan foydalanadigan rozetka:
Socket socket = new
Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Yoki UDP protokoli yordamida rozetka:
Socket socket = new
Soket (AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.UDP);
Shunday qilib, rozetkani yaratishda biz AddressFamily ro'yxatidan protokollarning turli kombinatsiyalarini, rozetka turlarini, qiymatlarni belgilashimiz mumkin. Biroq, ayni paytda, barcha kombinatsiyalar to'g'ri emas. Shunday qilib, Tcp protokoli orqali ishlash uchun biz parametrlarni ko'rsatishimiz kerak: AddressFamily.InterNetwork, SocketType.Stream va ProtocolType.TCP. UDP uchun parametrlar to'plami boshqacha bo'ladi: AddressFamily.InterNetwork, SocketType.Dgram va ProtocolType.UDP. Boshqa protokollar uchun qiymatlar to'plami boshqacha bo'ladi. Shuning uchun, rozetkalardan foydalanish alohida protokollar qanday ishlashi haqida ba'zi bilimlarni talab qilishi mumkin. TCP va UDP bilan bog'liq bo'lsada, hamma narsa nisbatan sodda.
Rozetkalarning umumiy ishlash printsipi:
Tanlangan protokollardan qat'i nazar, rozetkalar bilan ishlashda biz Socket sinfining usullariga tayanamiz:
Accept(): kiruvchi ulanishni boshqarish uchun yangi Soket yaratadi
Bind(): Socket ob'ektini mahalliy so'nggi nuqtaga bog'laydi
Close(): rozetkani yopadi
Connect(): masofaviy xost bilan aloqa o'rnatadi
Listen(): kiruvchi so'rovlarni tinglashni boshlaydi
Poll(): rozetka holatini belgilaydi
Receive(): ma'lumotlarni qabul qiladi
Send(): ma'lumotlarni yuboradi
Shutdown(): rozetkada ma'lumotlarni yuborish va qabul qilishni bloklaydi
Amaldagi protokolga (TCP, UDP va boshqalar) qarab, rozetkalar bilan ishlashning umumiy printsipi biroz farq qiladi.
TCP kabi ulanishni o'rnatishni talab qiladigan protokoldan foydalanilganda, server kiruvchi ulanishlarni tinglash uchun nuqta o'rnatish uchun Bind usulini chaqirishi va keyin Tinglash usuli yordamida ulanishlarni tinglashni boshlashi kerak. Keyinchalik, Accept usulidan foydalanib, foydalanuvchi masofaviy xost bilan bog'lanish uchun ishlatiladigan Socket ob'ekti ko'rinishida kiruvchi ulanish so'rovlarini olishi mumkin. Qabul qilingan rozetkada ma'lumotlarni yuborish va qabul qilish uchun mos ravishda yuborish va qabul qilish usullari chaqiriladi. Agar foydalanuvchi serverga ulanishi kerak bo'lsa, u holda Connect usuli chaqiriladi. Server bilan bog'lanish uchun Yuborish yoki Qabul qilish usullari ham qo'llaniladi.
Agar foydalanuvchi UDP kabi ulanishni o'rnatishni talab qilmaydigan protokoldan foydalanayotgan bo'lsa, Bind usulini chaqirganidan so'ng, Listen usulini chaqirishi shart emas. Bu holda ma'lumotlarni qabul qilish uchun ReceiveFrom usuli, ma'lumotlarni yuborish uchun esa SendTo usuli qo'llaniladi.
Do'stlaringiz bilan baham: |