Terimakasih telah Mampir ke Blog Q

Blog Nylla

Terimakasih telah menyempatkan diri untuk mampir ke blog Qu, tunggu hal yang terbaru lagi yea,,,,,,

Socket


Pengenalan Socket

PENDAHULUAN

Sejarah Socket Programming
            Pada tanggal 7 januari 1958 (ARPA) Advanced Research Project Agency membeli beberapa komputer dari vendor yang berbeda beda. Kemudian ARPA mencoba untuk menyatukan semua komputer tersebut satu sama lain ARPA menemukan perbedaan untuk komunikasi antar bahasa dalam masing masing vendor komputer.
            Pada tahun 1962, J. C. R. Licklider mengembangkan ide untuk menyatukan komunikasi komputer yang berbeda vendor tersebut. Meskipun masing masing komputer memiliki perbedaan yang sangat besar.
            Sejak ide J. C. R. Licklider dikemukakan, ARPA berusaha untuk mengembangkan teori tersebut. Pada tahun 1960an ARPA berubah nama menjadi DARPA (Defense Advance Research Projects Agency. Pada tahun 1969 University Of California, Berkeley (UCB) mengembangkan UNIX yang dikenal sebagai BSD. Pada tahun 1982 BSD versi 4.1 dan BSD 4.2 diluncurkan oleh UCB yang didalamnya terdapat implementasi jaringan TCP/IP, konsep jaringan socket (UNIX Socket) dan interface. Dan DARPA juga menemukan Socketnya sendiri (Internet Socket).

Perjalanan Waktu Penemuan SOCKET

Alasan menggunakan socket
-          Sistem UNIX programming lebih banyak dipengaruhi oleh bahasa C
-          Internet didunia lebih banyak tersebar dengan sistem UNIX (TCP/IP)

Apa itu Socket ?
-          Socket adalah file descriptors, yaitu file yang membangun dan memperjelas sistem.
-          Socket adalah Application Program Interface (API)
-          Socket adalah metode protocol independent yang membuat koneksi diantara proses.
-          SOCKET = IP ADDRESS + PORT NUMBER
-          Socket adalah file yang berguna sebagai system calls (Komunikasi sistem). Contoh seperti, pesawat telepon.
-          Socket dapat mengirim dan menerima data dari network.

Jenis-Jenis Socket
  1. Internet Socket (DARPA)
  2. UNIX Socket
  3. X.25 Socket (CCITT X.25)
  4. dsb.



SIMPLE SOCKET PROGRAMMING (Praktekkin Yá)

Listing socket1.c

/* Listing socket1.c */

/*Contoh dari socketpair(2) function: */


#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>

int
main(int argc,char **argv) {
int z; /* Status pengembalian kode*/
int s[2]; /* menyatukan socket*/

/*
* Membuat hubungan dengan socket local:
*/
z = socketpair(AF_LOCAL,SOCK_STREAM,0,s);

if ( z == -1 )
      {
      fprintf(stderr,"%s: socketpair(AF_LOCAL,SOCK_STREAM,0)\n", strerror(errno));

      return 1; /* Jika GAGAL koneksi */
      }

/*
* Laporan socket pengembalian file descriptor :
*/

printf("s[0] = %d;\n",s[0]);
printf("s[1] = %d;\n",s[1]);

system("netstat --unix -p");

return 0;
}

Output Listing socket1.c:
s[0] = 3;
s[1] = 4;
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type . . . I-Node PID/Program name Path
unix 1 [ ] STREAM . . . 406 - @00000019
unix 1 [ ] STREAM . . . 490 - @0000001f
unix 1 [ ] STREAM . . . 518 - @00000020
unix 0 [ ] STREAM . . . 117 - @00000011
unix 1 [ ] STREAM . . . 789 - @00000030
unix 1 [ ] STREAM . . . 549 - @00000023
unix 1 [ ] STREAM . . .1032 662/01lst01
unix 1 [ ] STREAM . . .1031 662/01lst01
unix 1 [ ] STREAM . . . 793 - /dev/log
unix 1 [ ] STREAM . . . 582 - /dev/log
unix 1 [ ] STREAM . . . 574 - /dev/log
unix 1 [ ] STREAM . . . 572 - /dev/log
unix 1 [ ] STREAM . . . 408 - /dev/log


Listing socket2.c

/* Listing socket2.c:
*
* contoh program sederhana koneksi socket dengan I/O:
*/
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>

int
main(int argc,char **argv) {
int z; /* status pengembalian kode*/
int s[2]; /* koneksi socket */
char *cp; /* penunjuk yang sedang bekerja */
char buf[80]; /* kerja buffer */

/*
* membuat hubungan dengan local sockets:
*/
z = socketpair (AF_LOCAL,SOCK_STREAM,0,s);

if ( z == -1 )
      {
      fprintf(stderr, "%s: socketpair(AF_LOCAL,SOCK_STREAM," "0)\n", strerror(errno));
      return 1; /* Jika Gagal Koneksi */
      }
/*
* menulis pesan ke socket s[1]:
*/
z = write(s[1],cp="Hello?",6);
if ( z < 0 )
      {
      fprintf(stderr, "%s: write(%d,\"%s\",%d)\n", strerror(errno),s[1],cp,strlen(cp));
      return 2; /* Jika gagal menulis */
      }

printf("Wrote message '%s' on s[1]\n",cp);

/*
* Membaca dari socket s[0]:
*/
z = read(s[0],buf,sizeof buf);
if ( z < 0 )
      {
      fprintf(stderr, "%s: read(%d,buf,%d)\n", strerror(errno),s[0],sizeof buf);
      return 3; /* Jika gagal membaca */
      }

/*
* Melaporkan pesan
*/
buf[z] = 0; /* NUL terminate */
printf("Received message '%s' from socket s[0]\n", buf);

/*
* mengirim balasan ke s[1] dari s[0]:
*/
z = write(s[0],cp="Go away!",8);
if ( z < 0 )
      {
      fprintf(stderr,
 "%s: write(%d,\"%s\",%d)\n", strerror(errno),s[0],cp,strlen(cp));
      return 4; /* Jika gagal menulis */
      }

printf("Wrote message '%s' on s[0]\n",cp);

/*
* Membaca dari socket s[1]:
*/
z = read(s[1],buf,sizeof buf);
if ( z < 0 )
      {
      fprintf(stderr,
 "%s: read(%d,buf,%d)\n",

strerror(errno),s[1],sizeof buf);
      return 3; /* Jika gagal membaca */
      }

/*
* Laporan bahwa pesan telah diterima pada s[0]:
*/
buf[z] = 0; /* NUL terminate */
printf("Received message '%s' from socket s[1]\n", buf);

/*
*menutup sockets:
*/
close(s[0]);
close(s[1]);

puts("Done.");
return 0;
}

Output Listing socket2.c:

Wrote message 'Hello?' on s[1]
Received message 'Hello?' from socket s[0]
Wrote message 'Go away!' on s[0]
Received message 'Go away!' from socket s[1]
Done.

Tidak ada komentar:

Posting Komentar