Multi-threaded echo Server
Multi-threader echo program using c
Server.c :-
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
int no=0;
void *thread_p(void * args)
{
int sid=*(int*)args,i;
char msg[100];
while(1)
{
printf("\n\t Client is %d and number : %d ",sid,no);
for(i=0;i<100;i++)
msg[i]=NULL;
recv(sid,msg,100,0);
send(sid,msg,strlen(msg),0);
printf("\n\tMsg : %s",msg);
if(strcmp(msg,"exit")==0)
{
close(sid);
exit(1);
}
}
}
int main()
{
int skt,bnd,len,new_skt,i;
pthread_t clnt;
struct sockaddr_in address;
skt=socket(AF_INET,SOCK_STREAM,0);
if(skt>0)
{
address.sin_family=AF_INET;
address.sin_port=htons(10000);
address.sin_addr.s_addr=INADDR_ANY;
bnd=bind(skt,(struct sockaddr * ) &address,sizeof(address));
if(bnd==0)
{
while(1)
{
listen(skt,3);
len=sizeof(struct sockaddr_in);
new_skt=accept(skt,(struct sockaddr*)&address,&len);
if(new_skt>0)
{
no++;
pthread_create(&clnt,NULL,thread_p,&new_skt);
}
else
printf("\n\t*** Rejected ***");
}
}
else
printf("\n\t***Binding error ***");
}
else
printf("\n\t*** Soc creation Error ***");
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Client.c
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int skt,con,i;
char ip[10],msg[100];
struct sockaddr_in address;
skt = socket(AF_INET,SOCK_STREAM,0);
if(skt>0)
{
address.sin_family=AF_INET;
address.sin_port=htons(10000);
printf("\n\tEnter Server IP : ");
gets(ip);
inet_pton(AF_INET,ip,&address.sin_addr);
con=connect(skt,(struct sockaddr *) &address,sizeof(address));
if(con==0)
{
while(1)
{
for(i=0;i<100;i++)
msg[i]=NULL;
printf("\nClient : ");
gets(msg);
send(skt,msg,strlen(msg),0);
if(strcmp(msg,"exit")==0)
break;
for(i=0;i<100;i++)
msg[i]=NULL;
recv(skt,msg,100,0);
printf("\nServer : %s",msg);
if(strcmp(msg,"exit")==0)
break;
}
}
else
printf("\n\t*** CON ERROR ****");
}
else
printf("\n****Sock creation err ****");
close(skt);
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0 comments:
Post a Comment