Assemblyda send() va recv() orqali ma'lumot almashish
Socket dasturlashning muhim qismi bo‘lgan send()
va recv()
tizim chaqiruvlari mijoz va server o‘rtasida ma'lumot almashish uchun ishlatiladi. Bu mavzuda siz assembly tilida bu tizim chaqiruvlarini qanday amalga oshirishni o‘rganasiz.
send() tizim chaqirig‘i haqida
Vazifasi
send()
tizim chaqirig‘i socket orqali ma'lumot yuboradi. Bu chaqiruv TCP protokoli yordamida ishonchli tarzda ma'lumotni uzatadi.
Parametrlari
socket_fd
Socket fayl deskriptori
buffer
Yuboriladigan ma'lumot manzili
length
Yuboriladigan ma'lumot uzunligi
flags
Qo‘shimcha sozlamalar (ko‘pincha 0
)
send() tizim chaqirig‘i ishlash tartibi
eax
registrigasys_socketcall
identifikatori (0x66
) yuklanadi.ebx
registrigasend
funksiyasi kodi (9
) yuklanadi.ecx
registriga parametrlar jadvalining manzili yuklanadi.int 0x80
instruktsiyasi yordamida tizim chaqiruvini amalga oshiriladi.
Muvaffaqiyatli bajarilganda, eax
registrida yuborilgan baytlar soni qaytariladi.
recv() tizim chaqirig‘i haqida
Vazifasi
recv()
tizim chaqirig‘i socket orqali ma'lumot qabul qiladi. Bu chaqiruv TCP protokolida server yoki mijozdan kelgan ma'lumotlarni oladi.
Parametrlari
socket_fd
Socket fayl deskriptori
buffer
Qabul qilinadigan ma'lumot uchun bufer
length
Maksimal qabul qilinadigan baytlar soni
flags
Qo‘shimcha sozlamalar (ko‘pincha 0
)
recv() tizim chaqirig‘i ishlash tartibi
eax
registrigasys_socketcall
identifikatori (0x66
) yuklanadi.ebx
registrigarecv
funksiyasi kodi (10
) yuklanadi.ecx
registriga parametrlar jadvalining manzili yuklanadi.int 0x80
orqali tizim chaqiruvini amalga oshiriladi.
Muvaffaqiyatli bajarilganda, eax
registrida qabul qilingan baytlar soni qaytariladi.
Assembly kod – send()
va recv()
orqali ma'lumot almashish
send()
va recv()
orqali ma'lumot almashishQuyida mijozdan xabar qabul qilish va unga javob yuborish jarayonini ko‘rsatadigan assembly kod keltirilgan.
Kod – send()
va recv()
Kodning tushuntirishi
Ma'lumot qabul qilish (
recv()
)recv()
tizim chaqirig‘i mijozdan ma'lumot qabul qiladi.Buferga qabul qilingan ma'lumotni ekranga chiqarish uchun
sys_write
chaqiruvi ishlatilgan.
Ma'lumot yuborish (
send()
)send()
tizim chaqirig‘i yordamida mijozga "Hello, client!" xabari yuboriladi.
Socketlarni yopish
Ulanish tugagach, avval mijoz socketi, keyin server socketi
sys_close
orqali yopiladi.
Xatoliklarni qayta ishlash
Agar
recv()
yokisend()
chaqirig‘ida xatolik yuz bersa, dastur darhol chiqadi.
Eslatmalar
Socket parametrlarini sozlash:
recv_args
vasend_args
jadvallarida socket fayl deskriptori, bufer va uzunlik parametrlarini to‘g‘ri sozlash kerak.TCP protokoli: Bu kod TCP socket orqali ishlaydi. UDP uchun
sendto()
varecvfrom()
tizim chaqiruvlari ishlatiladi.Kelib tushgan baytlar soni:
recv()
chaqiruvieax
registrida kelgan baytlar sonini qaytaradi. Agar qiymat0
bo‘lsa, mijoz ulanishni yopganini bildiradi.
Bu orqalar li assemblyda send()
va recv()
tizim chaqiruvlari yordamida socket orqali ma'lumot almashish jarayonini o‘rgandingiz. Ushbu chaqiruvlar tarmoq dasturlashda asosiy vositalar bo‘lib, mijoz va server o‘rtasida real vaqt rejimida xabarlar uzatishni ta'minlaydi.
Last updated