TCP soketlari
Siz socket turini socket.SOCK_STREAM sifatida belgilab, socket.socket() yordamida socket obyektini yaratmoqchisiz. Buni qilganingizda, ishlatiladigan standart protokol Transmission Control Protocol (TCP) hisoblanadi. Bu yaxshi standart va ehtimol siz xohlagan narsadir.
Nima uchun TCP dan foydalanish kerak? Transmissiyani boshqarish protokoli (TCP):
Ishonchli: tarmoqqa tushib qolgan paketlar jo'natuvchi tomonidan aniqlanadi va qayta uzatiladi.
Buyurtmali ma'lumotlarni yetkazib berish mavjud: Ma'lumotlar yuboruvchi tomonidan yozilgan tartibda arizangiz tomonidan o'qiladi.
Bundan farqli o'laroq, socket.SOCK_DGRAM bilan yaratilgan User Datagram Protocol (UDP) socketlari ishonchli emas va qabul qiluvchi tomonidan o'qilgan ma'lumotlar jo'natuvchining yozishmalarida tartibsiz bo'lishi mumkin.
Nima uchun bu muhim? Tarmoqlar eng yaxshi quvvat yetkazib berish tizimidir. Ma'lumotlaringiz o'z manziliga etib borishiga yoki sizga yuborilgan narsalarni olishingizga kafolat yo'q.
Routerlar va kalitlar kabi tarmoq qurilmalari cheklangan tarmoqli kengligi mavjud va o'ziga xos tizim cheklovlari bilan birga keladi. Ular sizning mijozlaringiz va serverlaringiz kabi protsessorlar, xotiralar, avtobuslar va interfeys paketlari buferlariga ega. TCP sizni paket yo'qolishi, ma'lumotlarning tartibsiz kelishi va tarmoq bo'ylab muloqot qilayotganingizda doimo yuzaga keladigan boshqa tuzoqlar haqida tashvishlanishdan xalos qiladi.
Buni yaxshiroq tushunish uchun soket API qo'ng'iroqlari va TCP uchun ma'lumotlar oqimi ketma-ketligini tekshiring:
Chap tarafdagi ustun serverni bildiradi. O'ng tomonda mijoz joylashgan.
Y uqori chap ustundan boshlab, server "tinglash" socketini o'rnatish uchun qiladigan API chaqiruvlariga e'tibor bering:
soket()
.bind()
.listen()
.accept()
Tinglash socketsi o'z nomiga mos keladigan narsani bajaradi. U mijozlarning ulanishlarini tinglaydi. Mijoz ulanganda, server ulanishni qabul qilish yoki yakunlash uchun .accept() ni chaqiradi.
Mijoz serverga ulanishni o'rnatish va uch tomonlama qo'l siqishni boshlash uchun .connect() ga qo'ng'iroq qiladi. Qo'l berib ko'rishish bosqichi muhim ahamiyatga ega, chunki u tarmoqda ulanishning har bir tomoniga kirishni ta'minlaydi, boshqacha qilib aytganda, mijoz serverga va aksincha. Faqat bitta xost, mijoz yoki server boshqasiga kirishi mumkin.
O'rtada .send() va .recv() ga chaqiruvlar yordamida mijoz va server o'rtasida ma'lumotlar almashinadigan bo'lim bo'limi joylashgan.
Pastki qismida mijoz va server tegishli socketlarni yopadi.
Do'stlaringiz bilan baham: |