Friday, September 9, 2011

Membuat client dengan pemrograman c ++

Hellow blogger….
Untuk tulisan berikut ini saya akan membuat laporan tentang pemrograman dengan C++, untuk program yang akan saya buat masih sama dengan tugas yang kemarin yaitu membuat server – Client, tapi yang membuat beda disini adalah untuk Server tetap menggunakan server dari VB.6 yang sudah kita buat, dan untuk membuat Client nya menggunakan pemrograman C++.
Berikut adalah source code C++ untuk Client :
#define _CRT_SECURE_NO_DEPR]ECATE
int StartClient(unsigned short port, const char* serverName);
void EndClient(int clientSocket);
#include <winsock2.h>
#include <iostream>

using namespace std;

int main()
{
   
    cout << "\n\n"
         << "Client: Memulai sambungan ke server\n";
              
    HANDLE hConsole;
    hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
    SetConsoleTextAttribute(hConsole, 2);
    // -----------------------------------------------------
    int mySocket;
    mySocket = StartClient(70, "localhost");

    if (mySocket == -1)
    {
        EndClient(mySocket);
        return 1;
    }

    int pilihan;
   int msg;
   char Nama[10];
   char ID[10];
   string ip;
    {cout<<"Nama    = ";
    cin>>Nama;
    cout<<"Pasword = ";
    cin>>ID;
    cout<<Nama;
    cout<<ID<<endl;
  
}

cout<<"1)Mulai Chat\n";
cout<<"2)CANCEL\n";
cin>>pilihan;
if ( pilihan == 2 )
     exit (0);
else if (pilihan == 1 )

    int nBytes;
    #define MAX_MESSAGE_SIZE 4096
  
    char buffer[MAX_MESSAGE_SIZE];
    char inMessage[MAX_MESSAGE_SIZE];
  
    cout << "Client: Jika ingin Keluar, Ketik 'exit'\n";
    cout<<"Client: Silahkan tulis Pesan !\nClient: > ";

    for (;;)
    {
        gets(buffer);
        if (strcmp(buffer, "exit") == 0)
        {
            break;
        }
        unsigned long messageSize = strlen(buffer);
        messageSize = htonl(messageSize);
        if ((nBytes = send(mySocket, (char*)&messageSize, sizeof(messageSize), 0)) == SOCKET_ERROR)
        {
            cout << "Client: Sambungan Gagal!!\n";
        }
        messageSize = ntohl(messageSize);
        if ((nBytes = send(mySocket, buffer, messageSize, 0)) == SOCKET_ERROR)
        {
            cout << "Client: Pesan tidak terkirim!!\n";
        }
        cout << "\n>";

    }

    EndClient(mySocket);
    return 0;
}

int StartClient(unsigned short port, const char* serverName)
{
    int error;
    WSAData wsaData; // menyimpan informasi dari jaringan
    if ((error = WSAStartup(MAKEWORD(2, 2), &wsaData)) == SOCKET_ERROR) //membuat panggilan untuk memulai winsock
    {
              return -1;
    }
    int mySocket = socket(AF_INET, SOCK_STREAM, 0); //AF_INET untuk menyiapkan sambungan ke internet, Sock_sream Socket memulai sambungan.
    if (mySocket == SOCKET_ERROR) // Untuk memeriksa kalau terjadi kesalahan
    {
        cout << "Client: Error!\n";
        return -1;
    }
    struct hostent *host_entry;
    if ((host_entry = gethostbyname(serverName)) == NULL) //memeriksa jika server tidak ada
    {
        cout << "Client: Sambungan Ke server Tidak tersedia, Server Off\n";
    }
    struct sockaddr_in server;
    server.sin_family = AF_INET; //AF_INET ; Menyiapkan Sambunagn ke internet
    server.sin_port = htons(port);
    server.sin_addr.s_addr = *(unsigned long*) host_entry->h_addr;
    if (connect(mySocket, (sockaddr*)&server, sizeof(server)) == SOCKET_ERROR)
    {
        cout << "Client: error****.\n";
    }
    cout << "Client: Siap,,!\n";

    return mySocket;
}


void EndClient(int clientSocket)
{
    closesocket(clientSocket);
    WSACleanup();
 
}

Codding ini baru bisa digunakan untuk mengirim pesan ke server saja dan belum bisa digunakan untuk menerima data yang dikirim dari Server.

No comments :

Post a Comment