160 likes | 315 Views
Pertemuan 12 Membuat Program Client dan Server pada Win32 Console Application. Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0. Learning Outcomes. Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu :
E N D
Pertemuan 12Membuat Program Client dan Server pada Win32 Console Application Matakuliah : H0483 – Network Programming Tahun : 2008 Versi : 2.0
Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : • Mendemonstrasikan program aplikasi Client Server pada Win32 Console Application
Outline Materi • Kasus: DayTimeServer dan DayTimeClient • Membuat program Client di Win32 Console Application dengan menggunakan Compiler • Micosoft Visual C++ 6.0 • Borland C++ 5.0 • Dev C++ • Membuat program Server di Win32 Console Application dengan menggunakan Compiler • Micosoft Visual C++ 6.0 • Borland C++ 5.0 • Dev C++
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 • Langkah-Langkah : • Jalankan VC++ kemudian pilih menu File New • Masukkan nama Project dan Lokasi / Folder untuk menyimpan • project tersebut • Kemudian pilih Win32 Console Application
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 • Pilih : A “Hello World” Application kemudian klik Finish
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 • Open file: DayTimeServerDos.cpp kemudian edit file tersebut seperti sbb:
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 #include "stdafx.h" #include <winsock2.h> #include <time.h> 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); }
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 memset(&servAddr, 0, sizeof(struct sockaddr_in)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); 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); }
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 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; }
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 • Tambahkan : wsock32.lib pada Project settings VC++ sbb:
Membuat Program DayTimeServer dengan Microsoft VC++ 6.0 • Kemudian compilasi program ! • Setelah selesai, buat DayTimeClient nya • Tahap-tahapnya sama dengan DayTime Server diatas, tetapi code / programnya adalah sbb:
Membuat Program DayTimeClient dengan Microsoft VC++ 6.0 #include "stdafx.h" #include <stdio.h> #include <winsock2.h> 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("127.0.0.1"); clientAddr.sin_port = htons(6789);
Membuat Program DayTimeClient dengan Microsoft VC++ 6.0 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; }
Membuat Program DayTimeClient dengan Microsoft VC++ 6.0 • 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 127.0.0.1
Latihan • Modifikasi Contoh program pada power point sebelumnya, agar nomor Port dan nomor IP nya bisa dirubah-ubah pada command line. (contoh: DayTimeServer <Port> <IP>) • 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
Latihan • Kompilasi kedua contoh program diatas dengan compiler yang lain misalnya : Dev C++, atau Borland C++ (dan modifikasi bila perlu)