0% found this document useful (0 votes)
43 views6 pages

Jaring An

The document describes the steps to create a TCP server and TCP client program in C. It explains how to create sockets, bind ports, listen for connections, accept connections, communicate with clients, and close sockets. For the server, it covers setting up the socket, binding to a port, listening for connections, accepting connections, and communicating. For the client, it discusses creating the socket, connecting to the server, and communicating. Both require closing sockets after use.

Uploaded by

sayamakan12345
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
43 views6 pages

Jaring An

The document describes the steps to create a TCP server and TCP client program in C. It explains how to create sockets, bind ports, listen for connections, accept connections, communicate with clients, and close sockets. For the server, it covers setting up the socket, binding to a port, listening for connections, accepting connections, and communicating. For the client, it discusses creating the socket, connecting to the server, and communicating. Both require closing sockets after use.

Uploaded by

sayamakan12345
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 6

LISTING PROGRAM TCPserver.

c
#include <stdio.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #define KONEKSI_MAKSIMAL 10 int main (int argc, char *argv[]) { struct sockaddr_in alamat_serv; struct sockaddr_in alamat_clie; unsigned no_port; int socketfd; if (argc != 2) { fprintf (stderr, "gunakan: %s <nomor_port>\n", argv[0]); exit(1); } no_port = atoi (argv[1]); socketfd = socket (AF_INET, SOCK_STREAM, 0); /* untuk membersihkan child process, yang telah selesai */ signal(SIGCHLD, SIG_IGN); /* kita reset terlebih dahulu variable alamat_serv */ bzero (&alamat_serv, sizeof(alamat_serv)); alamat_serv.sin_family = AF_INET; alamat_serv.sin_port = htons (no_port); /* macro INADDR_ANY menghasilkan current ip */ alamat_serv.sin_addr.s_addr = htonl (INADDR_ANY); /* buka port */ if (bind (socketfd, (struct sockaddr *)&alamat_serv, sizeof (struct sockaddr)) < 0) {

fprintf (stderr, "maaf ya, tidak bisa memasang port !\n"); exit(1); } printf ("serverteman menunggu teman datang ...\n"); /* menuggu koneksi yang masuk, * koneksi maksimal dilayani sebanyak KONEKSI_MAKSIMAL */ listen (socketfd, KONEKSI_MAKSIMAL); while(1) { int client_size = sizeof (struct sockaddr_in); int newfd; /* menerima koneksi yang datang */ newfd =accept (socketfd, (struct sockaddr *)&alamat_clie, &client_size); if(newfd == -1) { perror ("accept"); /* jika terjadi error akan looping lagi */ continue; } /* mengetahui siapa yang mengadakan koneksi */ printf("Teman dari %s telah datang\n", inet_ntoa (alamat_clie.sin_addr)); /* fork mengasilkan nilai return 0 pada child process, pada parent process, fork() menghasilkan nilai pid dari child yang diciptakan*/ if (!fork ()) { /* child process */ /* peringatan !, variabel buffer hanya menampung 255 karakter */ char buffer[256]; sprintf (buffer, "Halo Teman, selamat datang di Server.Teman\n"); /* kirim pesan */ if (send (newfd, buffer, strlen (buffer), 0) == -1) { perror ("send"); continue; } close (newfd); exit (0);

} else /* parent process, disini tidak dibutuhkan newfd, jadi sebaiknya ditutup. parent process akan looping lagi untuk menerima client yang lain*/ close (newfd); } return 0; } TCPclient.c #include <stdio.h> #include <string.h> #include <unistd.h> #include <signal.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <netinet/in.h> int main (int argc, char *argv[]) { struct sockaddr_in alamat_ku; struct sockaddr_in tujuan; struct hostent *host_server; int socketfd, connect_status, baca; int no_port; char buffer[256]; if (argc != 3) { fprintf (stderr, "gunakan: %s <alamat server > <nomor_port>\n", argv[0]); exit(1); } if ((socketfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { fprintf (stderr, "tidak bisa memasang socket !\n"); exit(1); } if ((host_server = gethostbyname(argv[1])) == NULL) { fprintf (stderr, "Nama host mungkin salah :)\n"); exit(1);

} no_port = atoi(argv[2]); bzero (&tujuan, sizeof(tujuan)); tujuan.sin_family = AF_INET; tujuan.sin_port = htons (no_port); memcpy ((char *)&tujuan.sin_addr.s_addr, host_server->h_addr_list[0], host_server>h_length); if ((connect_status = connect (socketfd, (struct sockaddr *)&tujuan, sizeof(tujuan))) < 0) { fprintf(stderr, "%s: tidak dapat melakukan koneksi\n", argv[0]); exit(1); } while((baca = recv(socketfd, buffer, strlen(buffer), 0)) > 0) { printf("%s", buffer); } close (socketfd); return 0; } Langkah-langkah Setting TCP server : Membuat socket TCP, dengan panggilan ke socket (). Binding soket ke port mendengarkan, dengan panggilan untuk mengikat (). Sebelum memanggil bind (), seorang programmer harus menyatakan struktur sockaddr_in, jelas itu (dengan memset ()), dan sin_family (AF_INET), dan mengisi ke sin_port (mendengarkan port, dalam urutan byte jaringan) bidang. Mengkonversi int pendek untuk jaringan urutan byte dapat dilakukan dengan memanggil fungsi htons () (host ke pendek jaringan). Menyiapkan socket untuk mendengarkan koneksi (menjadikannya mendengarkan soket), dengan panggilan untuk mendengarkan (). Menerima koneksi masuk, melalui panggilan untuk menerima (). Ini blok sampai sambungan masuk diterima, dan kemudian mengembalikan sebuah socket descriptor untuk sambungan yang diterima. Deskriptor awal tetap deskriptor mendengarkan, dan menerima () dapat dipanggil kembali setiap saat dengan soket ini, sampai tertutup. Berkomunikasi dengan host remote, yang dapat dilakukan melalui send () dan recv () atau write () dan read ().

Akhirnya penutupan setiap soket yang dibuka, setelah tidak lagi dibutuhkan, dengan menggunakan tutup (). Catatan bahwa jika ada panggilan ke fork (), setiap proses harus menutup soket itu tahu tentang (kernel melacak berapa banyak proses yang memiliki deskriptor terbuka), dan dua proses tidak boleh menggunakan soket yang sama sekaligus.

Langkah-langkah setting TCP client Menyiapkan klien TCP melibatkan langkah-langkah berikut: Membuat socket TCP, dengan panggilan ke socket (). Menyambung ke server dengan menggunakan koneksi (), melewati sebuah struktur sockaddr_in dengan sin_family diatur ke AF_INET, sin_port set ke port titik akhir adalah mendengarkan (dalam urutan byte jaringan), dan sin_addr set ke alamat IP mendengarkan server (juga dalam urutan byte jaringan.) Berkomunikasi dengan server dengan menggunakan send () dan recv () atau write () dan read (). Mengakhiri sambungan dan membersihkan dengan panggilan untuk menutup (). Sekali lagi, jika ada panggilan ke fork (), setiap proses harus menutup () soket.

OUTPUT PROGRAM

TCPServer.c

TCPClient.c

LAPORAN AKHIR

MATA PRAKTIKUM KELAS PRAKTIKUM KE TANGGAL MATERI NPM NAMA KETUA ASISTEN NAMA ASISTEN PARAF ASISTEN JUMLAH LEMBAR

: P.JARINGAN : 4 IA 11 :4 : 20 MARET 2010 : TCP : 504.06.280 : FARLIN SETIAWAN : : : : 5 LEMBAR

LABORATORIUM INFORMATIKA UNIVERSITAS GUNADARMA 2009

You might also like