1 Pertemuan 10 Pemrograman Jaringan pada Windows dengan VC ) Matakuliah: H0483 – Network Programming Tahun: 2008 Versi: 2.0
2 Learning Outcomes Pada akhir pertemuan ini, diharapkan mahasiswa akan mampu : Mendemonstrasikan program aplikasi jaringan komputer pada sistem operasi windows dengan menggunakan Windows Socket.
3 Outline Materi Kasus : Membuat Program Chatting Tahapan tahapan membuat program di VC Memasukkan komponen Winsock 6.0 ke dalam program Membuat Form Coding Test Program
4 Membuat Program Chatting Program server dengan I/O Multiplexing pada pertemuan 7 sebelumnya dapat digunakan untuk server (pada Linux) untuk membuat sistem Chatting Sedangkan Clientnya dibuat dengan Visual Programming (VC++ 6.0) agar tampilannya lebih menarik.
5 Jalankan VC Pilih menu File New Pilih MFC AppWizard(exe), kemudian isi location dan Project name. Tahapan Membuat Program
6 Pilih Dialog Based, kemudian klik Next
7 Tahapan Membuat Program Untuk memasukkan komponen WinSock ke program pilih : Windows Sockets Kemudian Klik Finish
8 Kemudian buat Form sbb: Tahapan Membuat Program List Box Edit Box Button
9 Data Member Tambahkan data member sbb: CButton m_ctrlCancel; CButton m_ctrlSend; CButton m_ctrlDisConnect; CButton m_ctrlOK; CListBox m_ctrlListBox; CString m_csIPaddress; CString m_csPort; CString m_csNama; CString m_csMessage; SOCKET m_sClient; struct sockaddr_in m_server, m_client; BOOL m_bKill; BOOL m_bConnect;
10 Jika tombol Connect di Klik maka akan menjalankan program sbb: void CClientChattingDlg::OnOKConnect() { WSADATA wsd;CWaitCursor wait; CString str; UpdateData(TRUE); if(WSAStartup(MAKEWORD(2,2), &wsd) != 0){ AfxMessageBox("Failed to load Winsock library!\n"); return; } m_sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (m_sClient == INVALID_SOCKET){ str.Format("socket() failed: %d", WSAGetLastError()); AfxMessageBox(str); return; } m_server.sin_family = AF_INET; m_server.sin_port = htons(atoi(m_csPort)); m_server.sin_addr.s_addr = inet_addr(m_csIPaddress); if(connect(m_sClient, (struct sockaddr *)&m_server,sizeof(m_server)) == SOCKET_ERROR){ str.Format("connect() failed: %d", WSAGetLastError()); AfxMessageBox(str); return; } m_ctrlSend.EnableWindow(TRUE); m_ctrlDisConnect.EnableWindow(TRUE); m_ctrlCancel.EnableWindow(FALSE); AfxBeginThread(&thread,0); } Member Function
11 Jika tombol Send di klik akan menjalankan instruksi sbb: void CClientChattingDlg::OnSend() { CString str; UpdateData(TRUE); str=m_csNama+": "+m_csMessage; if(send(m_sClient,str, str.GetLength(),0) == SOCKET_ERROR){ AfxMessageBox("Error sending message"); return; } Member Function
12 Member Function Jika tombol Cancel di klik akan menjalankan instruksi sbb: void CClientChattingDlg::OnCancel() { m_bKill=TRUE; while(m_bKill && m_bConnect) DoEvents(); CDialog::OnCancel(); }
13 Member Function void CClientChattingDlg::OnDisconnectbtn() { CString str; m_bKill = TRUE; str=m_csNama+": DisConnect"; if(send(m_sClient,str,str.GetLength(),0)==SOCKET_ERROR){ AfxMessageBox("Error sending message"); return; } m_ctrlOK.EnableWindow(TRUE); m_ctrlDisConnect.EnableWindow(FALSE); m_ctrlCancel.EnableWindow(TRUE); }
14 Member Function UINT thread(LPVOID p) { int s; char ss[200]; CClientChattingDlg *dlg=(CClientChattingDlg*)AfxGetApp()->GetMainWnd(); dlg->m_bConnect = TRUE; while(!(dlg->m_bKill)){ s=recv(dlg->m_sClient,ss,200,0); ss[s]='\0'; dlg->m_ctrlListBox.InsertString(0,ss); } closesocket(dlg->m_sClient); WSACleanup(); dlg->m_bKill=FALSE; dlg->m_bConnect = FALSE; AfxEndThread(0); return 0; }
15 Member Function void CClientChattingDlg::DoEvents() { MSG msg; // Process existing messages in the application's message queue. // When the queue is empty, do clean up and return. while (::PeekMessage(&msg,NULL,0,0,PM_NOREMOVE)) { if (!AfxGetThread()->PumpMessage())return; }
16 Testing Hubungkan dua komputer dalam LAN Set IP Address masing-masing komputer Jalankan program server pada komputer dengan O/S Linux Jalankan program client pada komputer dengan O/S Windows Coba Connect dengan Server
17 Latihan Buat program DayTimeServer dan DayTimeClient pada Windows (Bahasa pemrograman VC++ atau yang lainnya) Buat Program EchoServer dan program Clientnya pada Windows dengan bahasa pemrograman VC++ atau yang lain