1 Pertemuan 12 Membuat Program Client dan Server pada Win32 Console Application Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0
2 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mendemonstrasikan program aplikasi Client Server pada Win32 Console Application
3 Outline Materi Kasus: DayTimeServer dan DayTimeClient Membuat program Client di Win32 Console Application dengan menggunakan Compiler –Micosoft Visual C –Borland C –Dev C++ Membuat program Server di Win32 Console Application dengan menggunakan Compiler –Micosoft Visual C –Borland C –Dev C++
4 Membuat Program DayTimeServer dengan Microsoft VC Langkah-Langkah : Jalankan VC++ kemudian pilih menu File New Masukkan nama Project dan Lokasi / Folder untuk menyimpan project tersebut Kemudian pilih Win32 Console Application
5 Membuat Program DayTimeServer dengan Microsoft VC Pilih : A “Hello World” Application kemudian klik Finish
6 Membuat Program DayTimeServer dengan Microsoft VC Open file: DayTimeServerDos.cpp kemudian edit file tersebut seperti sbb:
7 Membuat Program DayTimeServer dengan Microsoft VC #include "stdafx.h" #include int main(int argc, char* argv[]) { WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); struct sockaddr_in servAddr; SOCKET sktServ; sktServ = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(sktServ == INVALID_SOCKET){ printf("Error in creating socket [%i]\n", WSAGetLastError()); WSACleanup(); return(-1); }
8 Membuat Program DayTimeServer dengan Microsoft VC memset(&servAddr, 0, sizeof(struct sockaddr_in)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = inet_addr(" "); servAddr.sin_port = htons(6789); if(bind(sktServ, (struct sockaddr*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR){ printf("Error in binding socket [%i]\n", WSAGetLastError()); closesocket(sktServ); WSACleanup(); return(-1); } if(listen(sktServ, 4) == SOCKET_ERROR){ printf("Error in listen socket [%i]\n", WSAGetLastError()); closesocket(sktServ); WSACleanup(); return(-1); }
9 Membuat Program DayTimeServer dengan Microsoft VC struct sockaddr_in clientAddr; int clientAddrLen = sizeof(clientAddr); SOCKET sktToClient; sktToClient = accept(sktServ, (struct sockaddr*)&clientAddr, &clientAddrLen); if(sktToClient == INVALID_SOCKET){ printf("Error in accept client [%i]\n", WSAGetLastError()); closesocket(sktServ); WSACleanup(); return(-1); } int sent; char sBuf[1024] = ""; time_t ltime; time( <ime ); sprintf(sBuf,"The time is %s\n", ctime(<ime )); sent = send(sktToClient, sBuf, strlen(sBuf), 0); if(sent == 0) printf("Client closes connection\n"); else if(sent < 0) printf("Error in sending out data [%i]\n", WSAGetLastError()); closesocket(sktServ); closesocket(sktToClient); WSACleanup(); return 0; }
10 Membuat Program DayTimeServer dengan Microsoft VC Tambahkan : wsock32.lib pada Project settings VC++ sbb:
11 Membuat Program DayTimeServer dengan Microsoft VC Kemudian compilasi program ! Setelah selesai, buat DayTimeClient nya Tahap-tahapnya sama dengan DayTime Server diatas, tetapi code / programnya adalah sbb:
12 Membuat Program DayTimeClient dengan Microsoft VC #include "stdafx.h" #include int main(int argc, char* argv[]) { WSADATA wsaData; WSAStartup(MAKEWORD(2,2), &wsaData); SOCKET sktClient; sktClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(sktClient == INVALID_SOCKET){ printf("Error in creating socket [%i]\n", WSAGetLastError()); WSACleanup(); return(-1); } // Connect to a server. struct sockaddr_in clientAddr; clientAddr.sin_family = AF_INET; clientAddr.sin_addr.s_addr = inet_addr(" "); clientAddr.sin_port = htons(6789);
13 Membuat Program DayTimeClient dengan Microsoft VC if(connect(sktClient, (struct sockaddr*)&clientAddr, sizeof(clientAddr)) == SOCKET_ERROR){ printf("Error in connecing server [%i]\n", WSAGetLastError()); closesocket(sktClient); WSACleanup(); return(-1); } int recved; char rBuf[1024] = ""; recved = recv(sktClient, rBuf, 1024, 0); if(recved > 0) printf("%s\n", rBuf); else if(recved == 0) printf("Server closes connection\n"); else{ printf("Error in receiving data [%i]\n", WSAGetLastError()); closesocket(sktClient); WSACleanup(); return(-1); } closesocket(sktClient); WSACleanup(); return 0; }
14 Membuat Program DayTimeClient dengan Microsoft VC Tahap Selanjutnya : Test program Jalankan program server terlebih dahulu Kemudian jalankan program Clientnya Kedua program diatas hanya jalan pada satu komputer karena menggunakan local IP address
15 Latihan 1.Modifikasi Contoh program pada power point sebelumnya, agar nomor Port dan nomor IP nya bisa dirubah-ubah pada command line. (contoh: DayTimeServer ) 2.Contoh Program pada Power Point sebelumnya adalah Program DayTimeServer dan DayTimeClient dengan menggunakan protocol TCP/IP. Coba rubah/modifikasi agar kedua program tersebut menggunakan protokol UDP
16 Latihan 3.Kompilasi kedua contoh program diatas dengan compiler yang lain misalnya : Dev C++, atau Borland C++ (dan modifikasi bila perlu)