Perubahan variable Penanganan alamat IP socket

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