Rabu, 19 Februari 2014

Client-Server Socket Programming bahasa C di Linux

artikel ini akan membahas langkah-langkah membuat socket programming client-server dalam bahasa C. untuk dapat membuat chatt, kita harus membuat dua file source code, yaitu client dan server sebagai berikut.
1. buat source code server pada text editor lalu simpan, contoh simpan dengan nama server.c
 /* 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);
}

2. buat source code client sebagai berikut lalu simpan dengan nama client.c
/* 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);
}

3. buka terminal dan masuk ke direktori tempat Anda menyimpan source code yang Anda buat, misal: cd Desktop, cd Downloads, dll.
4. compile server.c dengan mengetikan gcc -o server server.c
5. buka terminal baru dan compile client.c dengan mengetikan gcc -o client client.c
6. jalankan server terlebih dahulu dengan mengetikan ./server pada teminal server
7. jalankan client dengan mengetikan ./client pada terminal client
8. computer sudah dapat menjalankan chatt antara client dan server. tampilan layar akan tampak seperti gambar di bawah ini.

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


Tidak ada komentar:

Posting Komentar