Soket Unix - Struktur

Berbagai struktur digunakan dalam Unix Socket Programming untuk menyimpan informasi tentang alamat dan port, dan informasi lainnya. Sebagian besar fungsi soket memerlukan penunjuk ke struktur alamat soket sebagai argumen. Struktur yang didefinisikan dalam bab ini terkait dengan Keluarga Protokol Internet.

sockaddr

Struktur pertama adalah sockaddr yang menyimpan informasi soket -

struct sockaddr {
   unsigned short   sa_family;
   char             sa_data[14];
};

Ini adalah struktur alamat soket umum, yang akan diteruskan di sebagian besar panggilan fungsi soket. Tabel berikut memberikan deskripsi bidang anggota -

Atribut Nilai Deskripsi
sa_family

AF_INET

AF_UNIX

AF_NS

AF_IMPLINK

Ini mewakili keluarga alamat. Di sebagian besar aplikasi berbasis Internet, kami menggunakan AF_INET.
sa_data Alamat khusus protokol Isi dari 14 byte alamat khusus protokol diinterpretasikan menurut jenis alamat. Untuk keluarga Internet, kami akan menggunakan alamat IP nomor port, yang diwakili oleh struktur sockaddr_in yang ditentukan di bawah.

sockaddr in

Struktur kedua yang membantu Anda mengacu pada elemen soket adalah sebagai berikut -

struct sockaddr_in {
   short int            sin_family;
   unsigned short int   sin_port;
   struct in_addr       sin_addr;
   unsigned char        sin_zero[8];
};

Berikut adalah deskripsi bidang anggota -

Atribut Nilai Deskripsi
sa_family

AF_INET

AF_UNIX

AF_NS

AF_IMPLINK

Ini mewakili keluarga alamat. Di sebagian besar aplikasi berbasis Internet, kami menggunakan AF_INET.
sin_port Service Port Nomor port 16-bit di Network Byte Order.
sin_addr Alamat IP Alamat IP 32-bit di Network Byte Order.
sin_zero Tidak digunakan Anda baru saja menyetel nilai ini ke NULL karena ini tidak digunakan.

di addr

Struktur ini hanya digunakan pada struktur di atas sebagai bidang struktur dan menampung 32 bit netid / hostid.

struct in_addr {
   unsigned long s_addr;
};

Berikut adalah deskripsi bidang anggota -

Atribut Nilai Deskripsi
s_addr pelabuhan layanan Alamat IP 32-bit di Network Byte Order.

tuan rumah

Struktur ini digunakan untuk menyimpan informasi yang berhubungan dengan host.

struct hostent {
   char *h_name; 
   char **h_aliases; 
   int h_addrtype;  
   int h_length;    
   char **h_addr_list
	
#define h_addr  h_addr_list[0]
};

Berikut adalah deskripsi bidang anggota -

Atribut Nilai Deskripsi
h_name ti.com dll. Itu adalah nama resmi tuan rumah. Misalnya, tutorialspoint.com, google.com, dll.
h_aliases TI Ini memegang daftar alias nama host.
h_addrtype AF_INET Ini berisi keluarga alamat dan dalam kasus aplikasi berbasis Internet, itu akan selalu AF_INET.
h_length 4 Ini memegang panjang alamat IP, yaitu 4 untuk Alamat Internet.
h_addr_list in_addr Untuk alamat Internet, array pointer h_addr_list [0], h_addr_list [1], dan seterusnya, adalah poin ke struktur in_addr.

NOTE - h_addr didefinisikan sebagai h_addr_list [0] untuk menjaga kompatibilitas ke belakang.

hamba

Struktur khusus ini digunakan untuk menyimpan informasi yang terkait dengan layanan dan port terkait.

struct servent {
   char  *s_name; 
   char  **s_aliases; 
   int   s_port;  
   char  *s_proto;
};

Berikut adalah deskripsi bidang anggota -

Atribut Nilai Deskripsi
nama S http Ini adalah nama resmi layanan tersebut. Misalnya SMTP, FTP POP3, dll.
s_aliases ALIAS Ini memegang daftar alias layanan. Sebagian besar waktu ini akan disetel ke NULL.
olahraga 80 Ini akan memiliki nomor port terkait. Misalnya, untuk HTTP, nilainya menjadi 80.
s_proto

TCP

UDP

Ini diatur ke protokol yang digunakan. Layanan Internet disediakan menggunakan TCP atau UDP.

Tip tentang Struktur Socket

Struktur alamat soket merupakan bagian integral dari setiap program jaringan. Kami mengalokasikannya, mengisinya, dan meneruskan pointer ke berbagai fungsi soket. Kadang-kadang kita melewatkan pointer ke salah satu struktur ini ke fungsi soket dan mengisi isinya.

Kami selalu melewatkan struktur ini dengan referensi (yaitu, kami mengirimkan pointer ke struktur, bukan struktur itu sendiri), dan kami selalu meneruskan ukuran struktur sebagai argumen lain.

Ketika fungsi soket mengisi suatu struktur, panjangnya juga diteruskan oleh referensi, sehingga nilainya dapat diperbarui oleh fungsi tersebut. Kami menyebut argumen hasil nilai ini.

Selalu, setel variabel struktur ke NULL (yaitu, '\ 0') dengan menggunakan fungsi memset () untuk bzero (), jika tidak maka akan mendapatkan nilai sampah yang tidak diharapkan dalam struktur Anda.