Sunday, 20 March 2011

NPM- 2nd ex

2nd ex:-



PROGRAM:

SERVER:

#include<stdio.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<arpa/inet.h>
#define MAXLINE 10
int main(int argc,char **argv)
{
void strecho(int);
int sockfd,connfd,bfd,lfd;
pid_t childpid;
socklen_t clilen;
struct sockaddr_in servaddr,cliaddr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0)
perror("socket not created");
else
printf("created socket %d\n",sockfd);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_port=htons(6092);
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
bfd=bind(sockfd,(const struct sockaddr *)&servaddr,sizeof(servaddr));
if(bfd<0)
printf("notbound successful %d\n",bfd);
else
printf("binding %d\n",bfd);
lfd=listen(sockfd,5);
printf("listening %d\n",lfd);
for(;;)
{
connfd=-1;
clilen=sizeof(cliaddr);
connfd=accept(sockfd,(struct sockaddr *)&cliaddr,&clilen);
if(connfd<0)
printf("not connected%d\n",connfd);
else
printf("connection socket %d\n",connfd);
if((childpid=fork())==0)
{
close(sockfd);
strecho(connfd);
exit(0);
}
close(connfd);
}
}
void strecho(int sockfd)
{
ssize_t n;
char line[MAXLINE];
for(;;)
{
n=recv(sockfd,line,MAXLINE,0);
printf("bytes received %d\n",n);
if(n>0)
{
send(sockfd,line,n,0);
printf("bytes sent %d\n",n);
}
else
close(sockfd);
}
}

 CLIENT:

#include<stdio.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#define MAXLINE 100
void strclient(FILE *fp,int sockfd);
int main(int argc,char **argv)
{
int sockfd,connfd,n;
struct sockaddr_in servaddr;
if(argc!=3)
printf("arg error");
sockfd=socket(AF_INET,SOCK_STREAM,0);
printf("socket description %d\n",sockfd);
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(atoi(argv[2]));
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);
connfd=connect(sockfd,(const struct sockaddr *)&servaddr,sizeof(servaddr)
);
if(connfd<0)
printf("connected socket %d",connfd);
strclient(stdin,sockfd);
exit(0);
}
void strclient(FILE *fp,int sockfd)
{
int n;
char sendline[MAXLINE],recvline[MAXLINE];
while(fgets(sendline,MAXLINE,fp)!=NULL)
{
if(strcmp(sendline,"exit/n")==0)
{
close(sockfd);
exit(0);
}
else
{
n=send(sockfd,sendline,strlen(sendline),0);
printf("bytes sent %d\n",n);
if(recv(sockfd,recvline,MAXLINE,0)==0)
printf("service terminated");
recvline[n]='\0';
fputs(recvline,stdout);
}
}
}



OUTPUT:

server output:

[it86091@vecit ~]$ cc program2a.c
[it86091@vecit ~]$ ./a.out
created socket 3
binding :0
listening :0
connected socket 4
bytes received 3
bytes sent 3



client:

[it86091@vecit ~]$ cc program2b.c
[it86091@vecit ~]$ ./a.out 172.16.6.4 6092
socket description 3
hi
bytes sent 3
hi

No comments:

Post a Comment