Rabu, 19 Februari 2014

Membuat aplikasi chat sederhana dengan Bahasa C

Dalam postingan ini kita akan belajar tentang penggunakaan socket programming, contoh yang kita pakai disini adalah aplikasi chatting, dengan menggunakan bahasa C,
pertama adalah buat file C yang akan menjadi server dan client. berikut kodingnya :

koding untuk server :




        #include<stdio.h>

        #include<netinet/in.h>

        #include<sys/types.h>

        #include<sys/socket.h>

        #include<netdb.h>

        #include<stdlib.h>

        #include<string.h>

        #define MAX 80

        #define PORT 43454

        #define SA struct sockaddr

        void func(int sockfd)

        {

        char buff[MAX];

        int n;

        for(;;)

        {

        bzero(buff,MAX);

        read(sockfd,buff,sizeof(buff));

        printf("From client: %s\t To client : ",buff);

        bzero(buff,MAX);

        n=0;

        while((buff[n++]=getchar())!='\n');

        write(sockfd,buff,sizeof(buff));

        if(strncmp("exit",buff,4)==0)

        {

        printf("Server Exit...\n");

        break;

        }

        }

        }

        int main()

        {

        int sockfd,connfd,len;

        struct sockaddr_in servaddr,cli;

        sockfd=socket(AF_INET,SOCK_STREAM,0);

        if(sockfd==-1)

        {

        printf("socket creation failed...\n");

        exit(0);

        }

        else

        printf("Socket successfully created..\n");

        bzero(&servaddr,sizeof(servaddr));

        servaddr.sin_family=AF_INET;

        servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

        servaddr.sin_port=htons(PORT);

        if((bind(sockfd,(SA*)&servaddr, sizeof(servaddr)))!=0)

        {

        printf("socket bind failed...\n");

        exit(0);

        }

        else

        printf("Socket successfully binded..\n");

        if((listen(sockfd,5))!=0)

        {

        printf("Listen failed...\n");

        exit(0);

        }

        else

        printf("Server listening..\n");

        len=sizeof(cli);

        connfd=accept(sockfd,(SA *)&cli,&len);

        if(connfd<0)

        {

        printf("server acccept failed...\n");

        exit(0);

        }

        else

        printf("server acccept the client...\n");

        func(connfd);

        close(sockfd);

        }




koding untuk client :



        #include<stdio.h>

        #include<netinet/in.h>

        #include<sys/types.h>

        #include<sys/socket.h>

        #include<netdb.h>

        #include<string.h>

        #include<stdlib.h>

        #define MAX 80

        #define PORT 43454

        #define SA struct sockaddr

        void func(int sockfd)

        {

        char buff[MAX];

        int n;

        for(;;)

        {

        bzero(buff,sizeof(buff));

        printf("Enter the string : ");

        n=0;

        while((buff[n++]=getchar())!='\n');

        write(sockfd,buff,sizeof(buff));

        bzero(buff,sizeof(buff));

        read(sockfd,buff,sizeof(buff));

        printf("From Server : %s",buff);

        if((strncmp(buff,"exit",4))==0)

        {

        printf("Client Exit...\n");

        break;

        }

        }

        }


        int main()

        {

        int sockfd,connfd;

        struct sockaddr_in servaddr,cli;

        sockfd=socket(AF_INET,SOCK_STREAM,0);

        if(sockfd==-1)

        {

        printf("socket creation failed...\n");

        exit(0);

        }

        else

        printf("Socket successfully created..\n");

        bzero(&servaddr,sizeof(servaddr));

        servaddr.sin_family=AF_INET;

        servaddr.sin_addr.s_addr=inet_addr("127.0.0.1");

        servaddr.sin_port=htons(PORT);

        if(connect(sockfd,(SA *)&servaddr,sizeof(servaddr))!=0)

        {

        printf("connection with the server failed...\n");

        exit(0);

        }

        else

        printf("connected to the server..\n");

        func(sockfd);

        close(sockfd);

        }


ketika sudah dibuat saatnya menguji dengan menggunakan terminal, buka 2 terminal. jalan kan server di satu terminal dan client di terminal lain.
jalan kan dengan perintah :
gcc -o <nama aplikasi> <nama file c>.c
./<nama aplikasi>

setelah keduanya dijalankan, maka coba mengirim pesan.
kalau anda berhasil maka akan penampilannya akan seperti gambar berikut :


source : http://mcalabprogram.blogspot.com/2012/01/tcp-sockets-chat-applicationserver.html

2 komentar: