Assemblyda bind() va listen() tizim chaqiruvlari
Socket dasturlashda bind()
va listen()
tizim chaqiruvlari tarmoq serverlarini sozlashning muhim bosqichlaridir. Ular socketni tarmoqqa bog‘lash va ulanishlarni kutish uchun ishlatiladi. Bu mavzuda siz bind()
va listen()
tizim chaqiruvlarini assemblyda qanday amalga oshirishni o‘rganasiz.
bind() tizim chaqirig‘i haqida
Vazifasi
bind()
socketni lokal IP manzil va port raqamiga bog‘laydi. Bu jarayon orqali server socket o‘zining qaysi tarmoq interfeysi va portida keluvchi ulanishlarni qabul qilishini belgilaydi.
Parametrlari
bind()
tizim chaqirig‘iga quyidagi parametrlar uzatiladi:
socket_fd – Socket fayl deskriptori (socket yaratishda qaytarilgan qiymat).
sockaddr_in – IP manzil va portni saqlovchi struktura.
addrlen –
sockaddr_in
strukturasining uzunligi.
sockaddr_in struktura formati
IPv4 socket uchun ishlatiladigan sockaddr_in
struktura:
E'tibor bering:
Port raqami va manzil tarmoqli formatda (big-endian
) bo‘lishi kerak.
bind() tizim chaqirig‘i ishlash tartibi (assembly)
Quyida IPv4 uchun bind()
chaqiruvi kodini ko‘rsataman.
Assembly kod – bind() tizim chaqirig‘i
listen() tizim chaqirig‘i haqida
Vazifasi
listen()
socketni tinglash rejimiga o‘tkazadi. Bu orqali server socket keluvchi ulanishlarni kutib, ulanish navbatini boshqaradi. Bu faqat TCP protokolida qo‘llaniladi, chunki UDP protokolida ulanish o‘rnatilmaydi.
Parametrlari
socket_fd – Socket fayl deskriptori.
backlog – Ulanishlar navbatida kutishi mumkin bo‘lgan maksimal ulanishlar soni.
listen() tizim chaqirig‘i ishlash tartibi (assembly)
Quyida listen()
tizim chaqirig‘i kodini ko‘rsataman.
Assembly kod – listen() tizim chaqirig‘i
Assembly kodining qisqacha tushuntirishi
bind() chaqiruvi
sys_socketcall
tizim chaqiruvining kodi0x66
bo‘lib,bind
funksiyasi uchunebx = 2
qiymati beriladi.sockaddr_in
strukturasi yordamida socket IP manzili va portiga bog‘lanadi.Agar
eax
registrida qaytgan qiymat manfiy bo‘lsa, xatolik yuz bergan.
listen() chaqiruvi
sys_socketcall
kodi0x66
,listen
funksiyasi uchunebx = 4
qiymati.backlog
qiymati 5 qilib belgilangan, bu 5 ta ulanishni kutishga imkon beradi.eax
registrida qaytgan qiymat manfiy bo‘lsa, xatolik yuz bergan.
Eslatma
Socket oilasi: Bu misolda
AF_INET
IPv4 oilasi ishlatilgan.Port raqami: Port raqamini tarmoqli format (
big-endian
) da ko‘rsatish muhim.Tinglash rejimi:
listen()
faqat TCP socketlarda qo‘llaniladi.Xatolikni qayta ishlash: Xatoliklar yuz berganda
eax
registridagi manfiy qiymatlar tahlil qilinadi.
Bu orqali siz bind()
va listen()
tizim chaqiruvlarini assemblyda qanday amalga oshirishni o‘rgandingiz. Bu tizim chaqiruvlari socketni port va IP manzilga bog‘lash va ulanishlarni kutish uchun zarur.
Last updated