Saturday, February 5, 2011

5a,5b program



5A SERVER
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#define SERV_TCP_PORT 1434
int main()
{
char p[15],q[25],s[15],r[15];
int sockfd,newsockfd,clilen,i=1,j,k,n;
struct sockaddr_in caddr,saddr;
char c;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
  perror("server:socket error");
bzero((char*)&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=htons(SERV_TCP_PORT);
if((bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)))<0)
  perror("Bind error");
listen(sockfd,5);
clilen=sizeof(caddr);
if((newsockfd=accept(sockfd,(struct sockaddr*)&caddr,&clilen))<0)
  perror("srever:Accept error");
printf("Enter the String:");
scanf("%s",q);
for(i=0;i<strlen(q);i+=4)
{
 strcpy(p,"");
 for(j=0;j<4;j++)
 {
   if((i+j)==strlen(q))
   {
     for(k=0;k<3;k++)
     if((j+k)%4)
        p[j+k]=' ';
     else
     {
       j=j+k+1;
       break;
     }
   }
   p[j]=q[i+j];
 }
 p[j]='\0';
 p[strlen(p)]='\0';
 printf("\n The frame is transmitted is %s\n",p);
 write(newsockfd,p,strlen(p)+1);
 read(newsockfd,s,5);
 sscanf(s,"%d",&n);
 if(n==-1)
  puts("\nNo error");
 else
 {
   printf("An error has occured in position %d\n",n);
   for(j=n;j<4;j++)
     r[j-n]=p[j];
   r[j-n]='\0';
   strcat(r,"");
   n=strlen(r);
   for(j=0;j<n;j++)
     r[n+j]=s[n+j-1+i];
   r[n+j]='\0';
   puts("\nRetransmiting");
   write(newsockfd,r,strlen(r)+1);
 }
}

5A CLIENT:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
#define SERV_TCP_PORT 8999
int main(){
char p[25],q[25];
int sockfd,flag=1,n,c,i;
struct sockaddr_in saddr;
FILE *fp;
bzero((char*)&saddr,sizeof(saddr));
saddr.sin_family= AF_INET;
saddr.sin_addr.s_addr=inet_addr("127.0.0.1");
saddr.sin_port=htons( SERV_TCP_PORT);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
perror("Client::Socket Error");
if((connect(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)))<0)
perror("Client::Connect Error");
while(1){
read(sockfd,q,25);
printf("the received Frame is %s\n ",q );
puts("Do u want to insert an error or not ( 1 - yes/0 - no)?");
scanf("%d",&c);
if(c){
puts("Enter the bit position you want to enter the error");
scanf("%d",&n);
sprintf(p,"%d",n);
write(sockfd,p,strlen(p)+1);
read(sockfd,q,25);
printf("The Retransmitted frame is %s \n ",q);}
else{
puts("No error");
n=-1;
sprintf(p,"%d",n);
write(sockfd,p,strlen(p)+1);
}}
puts("Connection terminated");
close(sockfd);
return 0;}

5B SERVER
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#define SERV_TCP_PORT 5308
int main()
{
char p[15],q[25],s[15],m[0];
int sockfd,newsockfd,clilen,i,j,k,n;
struct sockaddr_in caddr,saddr;
char c;
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
perror("server:socket error");
bzero((char*)&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=htonl(INADDR_ANY);
saddr.sin_port=htons(SERV_TCP_PORT);
if((bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)))<0)
perror("Bind error");
listen(sockfd,5);
clilen=sizeof(caddr);
if((newsockfd=accept(sockfd,(struct sockaddr*)&caddr,&clilen))<0)
perror("srever:Accept error");
printf("Enter the String:");
scanf("%s",q);
int len=strlen(q);
q[len]='\0';
for(i=0;i<len+1;i++)
{
do
{
m[0]=q[i];
if(m[0]!='\0')
printf("\n The frame is transmitted is %c\n",m[0]);
write(newsockfd,m,1);
read(newsockfd,s,25);
sscanf(s,"%d",&n);
if(n==1)
printf("RETRANSMITING");
}while(n==1);
}

puts("\n Terminated!!!");
close(newsockfd);
close(sockfd);
}

5B CLIENT:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<stdlib.h>
#include<string.h>
#define SERV_TCP_PORT 5308
int main()
{
char p[25],q[25],m;
int sockfd,flag=1,n,c,i;
struct sockaddr_in saddr;
FILE *fp;
bzero((char*)&saddr,sizeof(saddr));
saddr.sin_family=AF_INET;
saddr.sin_addr.s_addr=inet_addr("127.0.0.1");
saddr.sin_port=htons(SERV_TCP_PORT);
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
perror("Cli: con ERROR");
if((connect(sockfd,(struct sockaddr*)&saddr,sizeof(saddr)))<0)
perror("error");
while(1)
{
printf("reading:");
read(sockfd,q,1);
m=q[0];
if(m=='\0')
break;
printf("THE received Frame is %c \n ",m);
puts("1 for error 0 for done");
scanf("%d",&n);
sprintf(p,"%d",n);
write(sockfd,p,strlen(p)+1);

}
puts("DONE");
close(sockfd);
return 0;
}