Untuk menggunakan struktur tersebut diperlukan 1 lagi struktur yaitu sockadd_in dimana arti “in” adalah internet
struct sockaddr_in { short int sin_family; Address family
unsigned short int sin_port; Port number struct in_addr sin_addr; Internet address
unsigned char sin_zero[8]; Same size as struct sockaddr };
Dengan struktur ini maka programmer akan dengan mudah mengontrol data. Pada bagian sin_zero
digunakan sebagai pelengkap dimana harus diset dengan nilai 0, hal tersebut dapat digunakan fungsi memset.
Untuk menggunakan alamat IP perlu juga sebuah variabel struktur yaitu struktur in_addr, dimana struktur in_addr adalah sebagai berikut :
Internet address a structure for historical reasons struct in_addr {
unsigned long s_addr; that’s a 32-bit long, or 4 bytes };
Sehingga untuk penggunanya dapat dilakukan dengan cara, membuat sebuah variable contoh ina dan bertipe struct sockaddr_in maka ina.sin_addr.s_addr dapat digunakan sebagai objek
untuk alamat IP.
8.2.1.1. Perubahan variable
Perubahan awal yang dapat digunakan adalah perubahan dari short 2 byte menjadi long 4 byte. Kemudian perubahan lainnya adalah perubahan dari host menjadi network. Sehingga
masing-masing perubahan bisa disingkat menjadi 1 huruf yaitu , s, l, n, dan h. Fungsi yang dapat digunakan untuk perubahan tersebut antara lain :
• htons : perubahan host ke network dengan sistem short • htonl : perubahan host ke network dengan sistem long
• ntohs : perubahan network ke host dengan sistem short • ntohl : perubahan network ke host dengan sistem long
8.2.1.2. Penanganan alamat IP
Ada beberapa cara untuk memasukkan alamat IP kedalam suatu variable pada pemrograman socket.
Apabila kita sudah memiliki variable struct sockadd_in ina, dan kita memiliki alamat IP “10.252.102.23”. Maka dengan fungsi inet_addr, akan dapat merubah alamat IP menjadi
unsigned long. Contoh penggunaan :
ina.sin_addr.s_addr = inet_addr“10.252.102.23”;
selain itu ada cara yang lainnya, yaitu dengan menggunakan inet_aton :
include syssocket.h include netinetin.h
include arpainet.h int inet_atonconst char cp, struct in_addr inp;
Dan contoh penggunaannya adalah sebagai berikut :
struct sockaddr_in my_addr; my_addr.sin_family = AF_INET; host byte order
my_addr.sin_port = htonsMYPORT; short, network byte order inet_aton10.252.102.53, my_addr.sin_addr;
memsetmy_addr.sin_zero, ’\0’, 8; zero the rest of the struct
Sehingga apabila kita ingin menampilkan isi variabel tersebut dapat dilakukan dengan fungsi tambahan inet_ntoa network to ascii.
printfs, inet_ntoaina.sin_addr;
Contoh lengkapnya :
char a1, a2; .
. a1 = inet_ntoaina1.sin_addr; this is 192.168.4.14
a2 = inet_ntoaina2.sin_addr; this is 10.12.110.57 printfaddress 1: s\n,a1;
printfaddress 2: s\n,a2;
akan menghasilkan
address 1: 10.12.110.57 address 2: 10.12.110.57
8.2.2.
System Call
System call adalah fungsi-fungsi dalam pemrograman. Fungsi-fungsi tersebut digunakan untuk menjalankan dan mengakses jaringan.
8.2.2.1. socket
Penggunaan :
include systypes.h include syssocket.h
int socketint domain, int type, int protocol;
Fungsi ini digunakan untuk inisialisasi dalam penggunaan socket. Dimana domain berisikan AF_INET, sedangkat type berisikan SOCK_STREAM atau SOCK_DGRAM dan protocol
berisikan angka 0. SOCK_STREAM digunakan apabila menggunakan protokol TCP dan SOCK_DGRAM
digunakan untuk protokol UDP. Selain isi diatas, masih banyak lagi lainnya dan bisa dilihat pada manual page.
8.2.2.2. bind