Minggu, 02 November 2014

Client Server

Haloo2,postingan kali ini akan membahas mengenai client dan server ^^
Berikut ini saya akan mempost codingan beserta comment2 penjelasan membuat server dan client di C dengan memakai socket

berikut codingannya
Server

#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
    int socket_desc , client_sock, c , read_size;/* deklarasi variabel yg diperlukan */
    struct sockaddr_in server, client;
    char client_message[2000];

    //create socket
    socket_desc = socket(AF_INET , SOCK_STREAM, 0); // inisialisasi
    if(socket_desc == -1) // klo buat server itu defaultnya 0, jadi klo misal -1 artinya socket nya ga bisa dibuat
    {
        printf("could not create socket");
    }
    puts("Socket Created"); // penanda pembuatan socket berhasil
    // prepare the sockaddr_in structure
    server.sin_family = AF_INET; // semua server.sin itu isi dari struct untuk alamt socket
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons( 8888 );
    // bind

    if(bind(socket_desc,(struct sockaddr *)&server, sizeof(server)) < 0) // binding intinya mengikat alamat dari client nya nanti
    { // defaultnya sama nilai 0, jika <0 berarti gagal
    // print the error message
    perror("bind failed. Error");
    return 1;
    }
    puts("bind done");
    // listen : nunggu command dari client, biasanya kita yg kasi server disuruh apa itu ditulis di client
    listen(socket_desc, 3);
    //accept and incoming connection

    puts("waiting for incoming connections . . .");
    c = sizeof(struct sockaddr_in);
    // accept connection from an incoming client
    client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c);
    if(client_sock < 0)
    {
    perror("accept failed");
    return 1;
    }
    puts("connection accepted");
    // receive message from client
    while( (read_size = recv(client_sock, client_message, 2000, 0)) > 0 )
    {
    //send the message back to client
    write(client_sock, client_message, strlen(client_message));
    }
    if(read_size == 0)
    {
    puts("Client disconnected");
    fflush(stdout);
    }
    else if(read_size == -1)
    {
    perror("recv failed");
    }
return 0;

}


Jalanin dulu nanti yang server ,baru jalanin yang client :)
nanti message yg ada di client akan dibalas sama persis oleh server (berdasarkan codingannya)

okehh sekian :)

Tidak ada komentar:

Posting Komentar