andi

Breaking News
Loading...
Senin, 09 Februari 2015

Contoh Program Chating Dengan C++

00.24
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();
}



Next
This is the most recent post.
Posting Lama

2 komentar:

 
Toggle Footer