Andi Faisal
12201398
1.source code Server
//program server
#include <cstdlib>
#include <iostream>
#include <winsock.h>
#include <windows.h>
#include <string>
#define CON_PORT 2015 //Port yang akan dihubungi
#define REC_PORT 2014 // Port untuk listening
using namespace std;
//prototype fungsi
bool bConnectTo (char* pszAaddress, int nNoPort);
bool bListenOnPort (int nNonPort);
void CloseConnection(SOCKET sock);
DWORD WINAPI Connect (LPVOID Param);
DWORD WINAPI Receive (LPVOID PARAM);
//variabel global
SOCKET sConn; // Socket yang digunakan pada fungsi bConnectTo()
SOCKET sRecv; // Socket yang digunakan pada fungsi bListenOnPort()
WSADATA wsa1; // Object WSADATA yang digunakan pada fungsi bConnectTo()
WSADATA wsa2; // Object WSADATA yang digunakan pada fungsi bListenOnPort()
int main(int argc, char *argv[])
{
bool bStatus;
DWORD id;
bStatus = bListenOnPort (REC_PORT);
if (bStatus == false )
{
cout << endl << "Listening pada port " << REC_PORT << " gagal!!" << endl;
}
else
{
cout << endl << "Listening pada port " << REC_PORT << "Berhasil!!" << endl;
}
CreateThread (NULL,0, &Connect,NULL,0, &id);
CreateThread (NULL,0 ,&Receive, NULL,0,&id);
while (true)
{
// Infinite looping untuk mengirim data berulang-ulang
char szInput [1024] = { '\0'}; // Inisiasi variabel NULL
SOCKET sSend; // Handle return fungsi send ()
cout << "send 1> ";
// input user dimasukkan ke szinput []
cin.getline (szInput, 1024);
sSend = send (sConn,szInput,1024,0); // mengirim nilai dari szInput
if (sSend == INVALID_SOCKET)
{
cout << "(Gagal Mengirim)" << endl;
}
else
{
// Berhasil Mengirim
cout << "Sedding OK)" << endl;
}
}
system ("PAUSE");
return EXIT_SUCCESS;
}
DWORD WINAPI Receive (LPVOID Param)
{
SOCKET sAcc;
sAcc = accept (sRecv,NULL,NULL);
if (sAcc == INVALID_SOCKET)
{
cout << endl << "Koneksi gagal diterima!!" << endl;
}
else
{
cout << endl << "Koneksi berhasil diterima" << endl << "send>";
}
while (true)
{
// Infinite looping untuk menampilkan data terus-menerus
Sleep(100); // tunda eksekusi selama 100 milisecond
char szMessage[1024] = { '\0' }; // Inisiasi variable NULL
SOCKET sRcv; // Handle return fungsi recv()
sRcv = recv(sAcc, szMessage, 1024, 0); // menerima
if(sRcv == INVALID_SOCKET)
{
cout << endl <<"Gagal Menerima Data!!" << endl;
break; // Akhiri looping
}
else
{
//tampilkan data dari client
cout << endl << "pesan atau data dari pengirim : " << szMessage << endl << "send>";
}
}
}
DWORD WINAPI Connect (LPVOID Param)
{
bool bKondisi;
while (true)
{
Sleep (1000);
bKondisi = bConnectTo("192.168.14.7",CON_PORT);
if (bKondisi == true)
{
cout << endl << "Koneksi Berhasil" << endl << "send>";
break;
}
}
return 0;
}
bool bConnectTo (char* pszAddress, int nNoPort)
{
int error = WSAStartup (0x0202, &wsa1); // Mengaktifkan Winsock
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if (wsa1.wVersion !=0x0202)
{
// Jika versi socket tidak sesuai
WSACleanup ();
return false;
}
SOCKADDR_IN addr; // Struktur socket
addr.sin_family = AF_INET;
addr.sin_port = htons (nNoPort);
addr.sin_addr.s_addr = inet_addr (pszAddress);
sConn = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); //membuat socket
if (sConn == INVALID_SOCKET)
{
// Jika Socket Gagagl di buat
return false;
}
if (connect (sConn, (SOCKADDR *) & addr, sizeof(addr)) == SOCKET_ERROR)
{
// Jika tidak dapat melakukan koneksi
return false;
}
else
{
// jika dapat melakukan koneksi
return true;
}
}
bool bListenOnPort (int nNoPort)
{
int error = WSAStartup (0x0202, &wsa2); // mengaktifkan Winsock
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if(wsa2.wVersion !=0x0202)
{
// jika versi socket tidak sesuai
WSACleanup();
return false;
}
SOCKADDR_IN addr; // Structur Socket
addr.sin_family = AF_INET;
addr.sin_port = htons(nNoPort);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
sRecv = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Membuat Socket
if(sRecv == INVALID_SOCKET)
{
// Jika terjadi error saat memanggil fungsi bind()
return false;
}
if(bind(sRecv, (LPSOCKADDR) &addr, sizeof(addr)) == SOCKET_ERROR)
{
// jika terjadi error saat memanggil fungsi bind()
return false;
}
listen (sRecv,SOMAXCONN); // siap mendengarkan
}
void CloseConnection(SOCKET sock)
{
if (sock)
{
// jika socket masi ada maka socket ditutup
closesocket(sock);
}
// Data dibersihkan
WSACleanup();
}
source code Client
//program client
#include <cstdlib>
#include <iostream>
#include <winsock.h>
#include <windows.h>
#include <string>
#define CON_PORT 2014 //Port yang akan dihubungi
#define REC_PORT 2015 // Port untuk listening
using namespace std;
//prototype fungsi
bool bConnectTo (char* pszAaddress, int nNoPort);
bool bListenOnPort (int nNonPort);
void CloseConnection(SOCKET sock);
DWORD WINAPI Connect (LPVOID Param);
DWORD WINAPI Receive (LPVOID PARAM);
//variabel global
SOCKET sConn; // Socket yang digunakan pada fungsi bConnectTo()
SOCKET sRecv; // Socket yang digunakan pada fungsi bListenOnPort()
WSADATA wsa1; // Object WSADATA yang digunakan pada fungsi bConnectTo()
WSADATA wsa2; // Object WSADATA yang digunakan pada fungsi bListenOnPort()
int main(int argc, char *argv[])
{
bool bStatus;
DWORD id;
bStatus = bListenOnPort (REC_PORT);
if (bStatus == false )
{
cout << endl << "Listening pada port " << REC_PORT << " gagal!!" << endl;
}
else
{
cout << endl << "Listening pada port " << REC_PORT << "Berhasil!!" << endl;
}
CreateThread (NULL,0, &Connect,NULL,0, &id);
CreateThread (NULL,0 ,&Receive, NULL,0,&id);
while (true)
{
// Infinite looping untuk mengirim data berulang-ulang
char szInput [1024] = { '\0'}; // Inisiasi variabel NULL
SOCKET sSend; // Handle return fungsi send ()
cout << "send 2> ";
// input user dimasukkan ke szinput []
cin.getline (szInput, 1024);
sSend = send (sConn,szInput,1024,0); // mengirim
if (sSend == INVALID_SOCKET)
{
cout << "(Gagal Mengirim)" << endl;
}
else
{
// Berhasil Mengirim
cout << "Sedding OK)" << endl;
}
}
system ("PAUSE");
return EXIT_SUCCESS;
}
DWORD WINAPI Receive (LPVOID Param)
{
SOCKET sAcc;
sAcc = accept (sRecv,NULL,NULL);
if (sAcc == INVALID_SOCKET)
{
cout << endl << "Koneksi gagal diterima!!" << endl;
}
else
{
cout << endl << "Koneksi berhasil diterima" << endl << "send>";
}
while (true)
{
// Infinite looping untuk menampilkan data terus-menerus
Sleep(100); // tunda eksekusi selama 100 milisecond
char szMessage[1024] = { '\0' }; // Inisiasi variable NULL
SOCKET sRcv; // Handle return fungsi recv()
sRcv = recv(sAcc, szMessage, 1024, 0); // menerima
if(sRcv == INVALID_SOCKET)
{
cout << endl <<"Gagal Menerima Data!!" << endl;
break; // Akhiri looping
}
else
{
//tampilkan data dari client
cout << endl << "pesan atau data pengirim : " << szMessage << endl << "send>";
}
}
}
DWORD WINAPI Connect (LPVOID Param)
{
bool bKondisi;
while (true)
{
Sleep (1000);
bKondisi = bConnectTo("192.168.14.2",CON_PORT);
if (bKondisi == true)
{
cout << endl << "Koneksi Berhasil" << endl << "send>";
break;
}
}
return 0;
}
bool bConnectTo (char* pszAddress, int nNoPort)
{
int error = WSAStartup (0x0202, &wsa1); // Mengaktifkan Winsock
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if (wsa1.wVersion !=0x0202)
{
// Jika versi socket tidak sesuai
WSACleanup ();
return false;
}
SOCKADDR_IN addr; // Struktur socket
addr.sin_family = AF_INET;
addr.sin_port = htons (nNoPort);
addr.sin_addr.s_addr = inet_addr (pszAddress);
// membuat Socket
sConn = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP); //membuat socket
if (sConn == INVALID_SOCKET)
{
// Jika Socket Gagagl di buat
return false;
}
if (connect (sConn, (SOCKADDR *) & addr, sizeof(addr)) == SOCKET_ERROR)
{
// Jika tidak dapat melakukan koneksi
return false;
}
else
{
// jika dapat melakukan koneksi
return true;
}
}
bool bListenOnPort (int nNoPort)
{
int error = WSAStartup (0x0202, &wsa2); // mengaktifkan Winsock
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if(wsa2.wVersion !=0x0202)
{
// jika versi socket tidak sesuai
WSACleanup();
return false;
}
SOCKADDR_IN addr; // Structur Socket
addr.sin_family = AF_INET;
addr.sin_port = htons(nNoPort);
addr.sin_addr.s_addr = htonl(INADDR_ANY);
sRecv = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); // Membuat Socket
if(sRecv == INVALID_SOCKET)
{
// Jika terjadi error saat memanggil fungsi bind()
return false;
}
if(bind(sRecv, (LPSOCKADDR) &addr, sizeof(addr)) == SOCKET_ERROR)
{
return false;
}
listen (sRecv,SOMAXCONN); // siap mendengarkan
}
void CloseConnection(SOCKET sock)
{
if (sock)
{
// jika socket masi ada maka socket ditutup
closesocket(sock);
}
// Data dibersihkan
WSACleanup();
}
2.hasil capture/Output
hasil pertama untuk server
hasil pertama untuk client
hasil kedua untuk server
hasil kedua untuk client
3.Setting Ip dua computer
Untuk Setting IP program client
DWORD WINAPI Connect (LPVOID Param)
{
bool bKondisi;
while (true)
{
Sleep (1000);
// INI IP : SETTING UNTUK CLIENT
bKondisi = bConnectTo("192.168.14.2",CON_PORT);
if (bKondisi == true)
{
cout << endl << "Koneksi Berhasil" << endl << "send>";
break;
}
}
return 0;
}
Untuk Setting IP program server
DWORD WINAPI Connect (LPVOID Param)
{
bool bKondisi;
while (true)
{
Sleep (1000);
// INI IP : SETTING UNTUK SERVER
bKondisi = bConnectTo("192.168.14.7",CON_PORT);
if (bKondisi == true)
{
cout << endl << "Koneksi Berhasil" << endl << "send>";
break;
}
}
return 0;
}
4.Laporan atau Penjelasan Isi Program
//program server
#include <cstdlib>
#include <iostream>
#include <winsock.h>
#include <windows.h>
#include <string>
#define CON_PORT 2015 //Port yang akan dihubungi
#define REC_PORT 2014 // Port untuk listening
using namespace std;
//prototype fungsi
bool bConnectTo (char* pszAaddress, int nNoPort);
bool bListenOnPort (int nNonPort);
void CloseConnection(SOCKET sock);
DWORD WINAPI Connect (LPVOID Param);
DWORD WINAPI Receive (LPVOID PARAM);
//variabel global
// Socket yang digunakan pada fungsi bConnectTo()
SOCKET sConn;
// Socket yang digunakan pada fungsi bListenOnPort()
SOCKET sRecv;
// Object WSADATA yang digunakan pada fungsi bConnectTo()
WSADATA wsa1;
// Object WSADATA yang digunakan pada fungsi bListenOnPort()
WSADATA wsa2;
int main(int argc, char *argv[])
{
bool bStatus;
DWORD id;
bStatus = bListenOnPort (REC_PORT);
if (bStatus == false )
{
cout << endl << "Listening pada port " << REC_PORT << " gagal!!" << endl;
}
else
{
cout << endl << "Listening pada port " << REC_PORT << "Berhasil!!" << endl;
}
CreateThread (NULL,0, &Connect,NULL,0, &id);
CreateThread (NULL,0 ,&Receive, NULL,0,&id);
while (true)
{
// Infinite looping untuk mengirim data berulang-ulang
char szInput [1024] = { '\0'}; // Inisiasi variabel NULL
SOCKET sSend; // Handle return fungsi send ()
cout << "send 1> ";
// input user dimasukkan ke szinput []
cin.getline (szInput, 1024);
// mengirim nilai dari szInput
sSend = send (sConn,szInput,1024,0);
if (sSend == INVALID_SOCKET)
{
// untuk menampilkan apabila gagal mengirim
cout << "(Gagal Mengirim)" << endl;
}
else
{
// Berhasil Mengirim
cout << "Sedding OK)" << endl;
}
}
system ("PAUSE");
return EXIT_SUCCESS;
}
DWORD WINAPI Receive (LPVOID Param)
{
SOCKET sAcc;
sAcc = accept (sRecv,NULL,NULL);
if (sAcc == INVALID_SOCKET)
{
// untuk menampilkan apabila koneksi gagal diterima
cout << endl << "Koneksi gagal diterima!!" << endl;
}
else
{
//untuk menampilakan apabila koneksi berhasil diterima
cout << endl << "Koneksi berhasil diterima" << endl << "send>";
}
while (true)
{
// Infinite looping untuk menampilkan data terus-menerus
Sleep(100); // tunda eksekusi selama 100 milisecond
char szMessage[1024] = { '\0' }; // Inisiasi variable NULL
SOCKET sRcv; // Handle return fungsi recv()
// menerima
sRcv = recv(sAcc, szMessage, 1024, 0);
if(sRcv == INVALID_SOCKET)
{
// untuk menampilkan apabila gagal menerima data
cout << endl <<"Gagal Menerima Data!!" << endl;
// Akhiri looping
break;
}
else
{
//tampilkan data dari client
cout << endl << "pesan atau data dari pengirim : " << szMessage << endl << "send>";
}
}
}
DWORD WINAPI Connect (LPVOID Param)
{
bool bKondisi;
while (true)
{
Sleep (1000);
bKondisi = bConnectTo("192.168.14.7",CON_PORT);
if (bKondisi == true)
{
// untuk menampilkan apabila koneksi berhasil
cout << endl << "Koneksi Berhasil" << endl << "send>";
break;
}
}
return 0;
}
bool bConnectTo (char* pszAddress, int nNoPort)
{
// Untuk Mengaktifkan Winsock
int error = WSAStartup (0x0202, &wsa1);
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if (wsa1.wVersion !=0x0202)
{
// Jika versi socket tidak sesuai
WSACleanup ();
return false;
}
// Struktur socket
SOCKADDR_IN addr;
// untuk mendeklarasikan tipe network protocol yang digunakan yaitu versi IP 4
addr.sin_family = AF_INET;
// Untuk mendeklarasikan port yang digunakan misal port 2015
addr.sin_port = htons (nNoPort);
// untuk mendeklarasikan IP yang digunakan
addr.sin_addr.s_addr = inet_addr (pszAddress);
//untuk membuat socket
sConn = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sConn == INVALID_SOCKET)
{
// Jika Socket Gagagl di buat
return false;
}
if (connect (sConn, (SOCKADDR *) & addr, sizeof(addr)) == SOCKET_ERROR)
{
// Jika tidak dapat melakukan koneksi
return false;
}
else
{
// jika dapat melakukan koneksi
return true;
}
}
bool bListenOnPort (int nNoPort)
{
// mengaktifkan Winsock
int error = WSAStartup (0x0202, &wsa2);
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if(wsa2.wVersion !=0x0202)
{
// jika versi socket tidak sesuai
WSACleanup();
return false;
}
// Structur Socket
SOCKADDR_IN addr;
// untuk mendeklarasikan tipe network protocol yang digunakan yaitu versi IP 4
addr.sin_family = AF_INET;
// Untuk mendeklarasikan port yang digunakan misal port 2014
addr.sin_port = htons(nNoPort);
// untuk mendeklarasikan IP yang digunakan
addr.sin_addr.s_addr = htonl(INADDR_ANY);
// Membuat Socket
sRecv = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sRecv == INVALID_SOCKET)
{
// Jika terjadi error saat memanggil fungsi bind()
return false;
}
// untuk mendengarkan kiriman pesan dari pengirim dengan socket 2014 dan IP 192.168.14.2
if(bind(sRecv, (LPSOCKADDR) &addr, sizeof(addr)) == SOCKET_ERROR)
{
// jika terjadi error saat memanggil fungsi bind()
return false;
}
// siap mendengarkan atau siap menerima koneksi
listen (sRecv,SOMAXCONN); // siap mendengarkan
}
void CloseConnection(SOCKET sock)
{
if (sock)
{
// jika socket masi ada maka socket ditutup
closesocket(sock);
}
// Data dibersihkan
WSACleanup();
}
//program client
#include <cstdlib>
#include <iostream>
#include <winsock.h>
#include <windows.h>
#include <string>
#define CON_PORT 2014 //Port yang akan dihubungi
#define REC_PORT 2015 // Port untuk listening
using namespace std;
//prototype fungsi
bool bConnectTo (char* pszAaddress, int nNoPort);
bool bListenOnPort (int nNonPort);
void CloseConnection(SOCKET sock);
DWORD WINAPI Connect (LPVOID Param);
DWORD WINAPI Receive (LPVOID PARAM);
//variabel global
// Socket yang digunakan pada fungsi bConnectTo()
SOCKET sConn;
// Socket yang digunakan pada fungsi bListenOnPort()
SOCKET sRecv;
// Object WSADATA yang digunakan pada fungsi bConnectTo()
WSADATA wsa1;
// Object WSADATA yang digunakan pada fungsi bListenOnPort()
WSADATA wsa2;
int main(int argc, char *argv[])
{
bool bStatus;
DWORD id;
bStatus = bListenOnPort (REC_PORT);
if (bStatus == false )
{
cout << endl << "Listening pada port " << REC_PORT << " gagal!!" << endl;
}
else
{
cout << endl << "Listening pada port " << REC_PORT << "Berhasil!!" << endl;
}
CreateThread (NULL,0, &Connect,NULL,0, &id);
CreateThread (NULL,0 ,&Receive, NULL,0,&id);
while (true)
{
// Infinite looping untuk mengirim data berulang-ulang
char szInput [1024] = { '\0'}; // Inisiasi variabel NULL
SOCKET sSend; // Handle return fungsi send ()
cout << "send 1> ";
// input user dimasukkan ke szinput []
cin.getline (szInput, 1024);
// mengirim nilai dari szInput
sSend = send (sConn,szInput,1024,0);
if (sSend == INVALID_SOCKET)
{
// untuk menampilkan apabila gagal mengirim
cout << "(Gagal Mengirim)" << endl;
}
else
{
// Berhasil Mengirim
cout << "Sedding OK)" << endl;
}
}
system ("PAUSE");
return EXIT_SUCCESS;
}
DWORD WINAPI Receive (LPVOID Param)
{
SOCKET sAcc;
sAcc = accept (sRecv,NULL,NULL);
if (sAcc == INVALID_SOCKET)
{
// untuk menampilkan apabila koneksi gagal diterima
cout << endl << "Koneksi gagal diterima!!" << endl;
}
else
{
//untuk menampilakan apabila koneksi berhasil diterima
cout << endl << "Koneksi berhasil diterima" << endl << "send>";
}
while (true)
{
// Infinite looping untuk menampilkan data terus-menerus
Sleep(100); // tunda eksekusi selama 100 milisecond
char szMessage[1024] = { '\0' }; // Inisiasi variable NULL
SOCKET sRcv; // Handle return fungsi recv()
// menerima
sRcv = recv(sAcc, szMessage, 1024, 0);
if(sRcv == INVALID_SOCKET)
{
// untuk menampilkan apabila gagal menerima data
cout << endl <<"Gagal Menerima Data!!" << endl;
// Akhiri looping
break;
}
else
{
//tampilkan data dari client
cout << endl << "pesan atau data dari pengirim : " << szMessage << endl << "send>";
}
}
}
DWORD WINAPI Connect (LPVOID Param)
{
bool bKondisi;
while (true)
{
Sleep (1000);
bKondisi = bConnectTo("192.168.14.2",CON_PORT);
if (bKondisi == true)
{
// untuk menampilkan apabila koneksi berhasil
cout << endl << "Koneksi Berhasil" << endl << "send>";
break;
}
}
return 0;
}
bool bConnectTo (char* pszAddress, int nNoPort)
{
// Untuk Mengaktifkan Winsock
int error = WSAStartup (0x0202, &wsa1);
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if (wsa1.wVersion !=0x0202)
{
// Jika versi socket tidak sesuai
WSACleanup ();
return false;
}
// Struktur socket
SOCKADDR_IN addr;
// untuk mendeklarasikan tipe network protocol yang digunakan yaitu versi IP 4
addr.sin_family = AF_INET;
// Untuk mendeklarasikan port yang digunakan misal port 2015
addr.sin_port = htons (nNoPort);
// untuk mendeklarasikan IP yang digunakan
addr.sin_addr.s_addr = inet_addr (pszAddress);
//untuk membuat socket
sConn = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sConn == INVALID_SOCKET)
{
// Jika Socket Gagagl di buat
return false;
}
if (connect (sConn, (SOCKADDR *) & addr, sizeof(addr)) == SOCKET_ERROR)
{
// Jika tidak dapat melakukan koneksi
return false;
}
else
{
// jika dapat melakukan koneksi
return true;
}
}
bool bListenOnPort (int nNoPort)
{
// mengaktifkan Winsock
int error = WSAStartup (0x0202, &wsa2);
if (error)
{
// jika terjadi error (nilai return !=0)
return false;
}
if(wsa2.wVersion !=0x0202)
{
// jika versi socket tidak sesuai
WSACleanup();
return false;
}
// Structur Socket
SOCKADDR_IN addr;
// untuk mendeklarasikan tipe network protocol yang digunakan yaitu versi IP 4
addr.sin_family = AF_INET;
// Untuk mendeklarasikan port yang digunakan misal port 2014
addr.sin_port = htons(nNoPort);
// untuk mendeklarasikan IP yang digunakan
addr.sin_addr.s_addr = htonl(INADDR_ANY);
// Membuat Socket
sRecv = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sRecv == INVALID_SOCKET)
{
// Jika terjadi error saat memanggil fungsi bind()
return false;
}
// untuk mendengarkan kiriman pesan dari pengirim dengan socket 2015 dan IP 192.168.14.7
if(bind(sRecv, (LPSOCKADDR) &addr, sizeof(addr)) == SOCKET_ERROR)
{
// jika terjadi error saat memanggil fungsi bind()
return false;
}
// siap mendengarkan atau siap menerima koneksi
listen (sRecv,SOMAXCONN); // siap mendengarkan
}
void CloseConnection(SOCKET sock)
{
if (sock)
{
// jika socket masi ada maka socket ditutup
closesocket(sock);
}
// Data dibersihkan
WSACleanup();
}
hmmm
BalasHapusgak bisa di copas
BalasHapus