You are on page 1of 12

Minor Assignment #10

On

UNIX NETWORK PROGRAMMING


(CSE 4042)

Submitted by

Name : Baivab Kumar Panda


Reg. No. : 1951012008
Branch : CSE
Semester : 6th
Section : E
Session : 2020-2021
Admission Batch : 2019

DEPARTMENT OF COMPUTER SCIENCE & ENGINEERING


FACULTY OF ENGINEERING & TECHNOLOGY (ITER)
SIKSHA ‘O’ANUSANDHAN DEEMED TO BE UNIVERSITY

BHUBANESWAR, ODISHA-751030
1. Write a TCP based IPV6 server and IPV6 client program to meet the
requirement of the above given problem statement.

Ans:
Server.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
int sockfd,m,a,b;
struct sockaddr_in serv_addr,cli_addr;
socklen_t servlen,clilen;
int newsockfd;
char buff1[256],buff2[256];
//socket creation
sockfd=socket(AF_INET,SOCK_STREAM,0);

if (sockfd<0)
printf("Socket creation failed\n");
else
{
printf("Socket created\n");
printf("Socket description-%d\n",sockfd );
}
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port=htons(atoi(argv[1]));
//binding of socket
if (bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
perror("Error in binding the socket");
//listening of socket
listen(sockfd,5);
printf("The server is listening\n");
//accept of socket
newsockfd=accept(sockfd,(struct sockaddr *)&cli_addr,&clilen);
if(newsockfd<0)
perror("Error in accepting");
else
printf("Server is accepting\n");

while(1)
{
read(newsockfd,&a,sizeof(a));
printf("Numbers received from client %d \n",a);
int n=a<0?-a:a;int rev=0;
while(n!=0)
{
rev=rev*10+(n%10);
n/=10;
}
rev=a<0?-rev:rev;
write(newsockfd,&rev,sizeof(rev));
}

close(sockfd);
return 0;
}

Client.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main(int argc, char const *argv[])
{
int sockfd,n,m;
struct sockaddr_in6 cli_addr;
sockfd=socket(AF_INET6,SOCK_STREAM,0);
char buff1[256],buff2[256];
if(sockfd<0)
perror("Error in socket creation");
bzero((char *)&cli_addr,sizeof(cli_addr));
cli_addr.sin6_family=AF_INET6;
//cli_addr.sin6_addr=inet6_addr(argv[1]);
cli_addr.sin6_port=htons(atoi(argv[1]));
inet_pton(AF_INET6,"::1",&cli_addr.sin6_addr); if(connect(sockfd,
(struct sockaddr *)&cli_addr,sizeof(cli_addr))<0)
{
perror("Error in connection establishment");
return 1;
}

printf("Enter number\n");
scanf("%d",&n);
write(sockfd,&n,sizeof(n));

read(sockfd,&m,sizeof(m));
printf("Reverse number= %d\n",m);
return 0;
}
Server:-

Client:-

2. Develop a TCP based IPV6 server and IPV4 client program to get the
solution of the given problem.

Ans:
Server.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
int sockfd,a;
struct sockaddr_in6 serv_addr,cli_addr;
socklen_t servlen,clilen;
int newsockfd;
char buff1[256],buff2[256];
//socket creation
sockfd=socket(AF_INET6,SOCK_STREAM,0);

if (sockfd<0)
printf("Socket creation failed\n");
else
{
printf("Socket created\n");
printf("Socket description-%d\n",sockfd );
}
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin6_family=AF_INET6;
serv_addr.sin6_addr=in6addr_any;
serv_addr.sin6_port=htons(atoi(argv[1]));
//binding of socket
if (bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
perror("Error in binding the socket");

//listening of socket
listen(sockfd,5);
printf("The server is listening\n");
//accept of socket
newsockfd=accept(sockfd,(struct sockaddr *)&cli_addr,&clilen);
if(newsockfd<0)
perror("Error in accepting");
else
printf("Server is accepting\n");

read(newsockfd,&a,sizeof(a));
printf("Numbers received from client %d \n",a);
int n=a<0?-a:a;int rev=0;
while(n!=0)
{
rev=rev*10+(n%10);
n/=10;
}
rev=a<0?-rev:rev;
write(newsockfd,&rev,sizeof(rev));

close(sockfd);
return 0;
}

Client.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main(int argc, char const *argv[])
{
int sockfd,m,a,b,ch;
struct sockaddr_in cli_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
char buff1[256],buff2[256];
if(sockfd<0)
perror("Error in socket creation");
bzero((char *)&cli_addr,sizeof(cli_addr));
cli_addr.sin_family=AF_INET;
cli_addr.sin_addr.s_addr=inet_addr(argv[1]);
cli_addr.sin_port=htons(atoi(argv[2]));
if(connect(sockfd,(struct sockaddr *)&cli_addr,sizeof(cli_addr))<0)
{
perror("Error in connection establishment");
return 1;
}
do
{
printf("Enter a\n");
scanf("%d",&a);
write(sockfd,&a,sizeof(a));

read(sockfd,&m,sizeof(m));
printf("server sent reverse number is=%d\n", m);
printf("Do you want to send more number.Press 1 for yes 0 for no\n");
scanf("%d",&ch);
}while(ch==1);
return 0;
}
Server:-
Client:-

3. Write a TCP based IPV4 server and IPV6 client program to find a solution of
the given problem.

Ans:
Server.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
int sockfd,m,a,b;
struct sockaddr_in serv_addr,cli_addr;
socklen_t servlen,clilen;
int newsockfd;
char buff1[256],buff2[256];
//socket creation
sockfd=socket(AF_INET,SOCK_STREAM,0);

if (sockfd<0)
printf("Socket creation failed\n");
else
{
printf("Socket created\n");
printf("Socket description-%d\n",sockfd );
}
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port=htons(atoi(argv[1]));
//binding of socket
if (bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
perror("Error in binding the socket");
//listening of socket
listen(sockfd,5);
printf("The server is listening\n");
//accept of socket
newsockfd=accept(sockfd,(struct sockaddr *)&cli_addr,&clilen);
if(newsockfd<0)
perror("Error in accepting");
else
printf("Server is accepting\n");

while(1)
{
read(newsockfd,&a,sizeof(a));
printf("Numbers received from client %d \n",a);
int n=a<0?-a:a;int rev=0;
while(n!=0)
{
rev=rev*10+(n%10);
n/=10;
}
rev=a<0?-rev:rev;
write(newsockfd,&rev,sizeof(rev));
}

close(sockfd);
return 0;
}
Client.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main(int argc, char const *argv[])
{
int sockfd,n,m;
struct sockaddr_in6 cli_addr;
sockfd=socket(AF_INET6,SOCK_STREAM,0);
char buff1[256],buff2[256];
if(sockfd<0)
perror("Error in socket creation");
bzero((char *)&cli_addr,sizeof(cli_addr));
cli_addr.sin6_family=AF_INET6;
//cli_addr.sin6_addr=inet6_addr(argv[1]);
cli_addr.sin6_port=htons(atoi(argv[1]));
inet_pton(AF_INET6,"::1",&cli_addr.sin6_addr); if(connect(sockfd,
(struct sockaddr *)&cli_addr,sizeof(cli_addr))<0)
{
perror("Error in connection establishment");
return 1;
}

printf("Enter number\n");
scanf("%d",&n);
write(sockfd,&n,sizeof(n));

read(sockfd,&m,sizeof(m));
printf("Reverse number= %d\n",m);
return 0;
}
Server:-

Client:-

4. Write a TCP based IPv4 server and IPV4 client program to meet the above
problem specification.

Ans:
Server.c
#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include<unistd.h>
int main(int argc, char const *argv[])
{
int sockfd,m,a,b;
struct sockaddr_in serv_addr,cli_addr;
socklen_t servlen,clilen;
int newsockfd;
char buff1[256],buff2[256];
//socket creation
sockfd=socket(AF_INET,SOCK_STREAM,0);

if (sockfd<0)
printf("Socket creation failed\n");
else
{
printf("Socket created\n");
printf("Socket description-%d\n",sockfd );
}
bzero((char *)&serv_addr,sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=INADDR_ANY;
serv_addr.sin_port=htons(atoi(argv[1]));
//binding of socket
if (bind(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr))<0)
perror("Error in binding the socket");

//listening of socket
listen(sockfd,5);
printf("The server is listening\n");
//accept of socket
newsockfd=accept(sockfd,(struct sockaddr *)&cli_addr,&clilen);
if(newsockfd<0)
perror("Error in accepting");
else
printf("Server is accepting\n");

while(1)
{
read(newsockfd,&a,sizeof(a));
printf("Numbers received from client %d \n",a);
int n=a<0?-a:a;int rev=0;
while(n!=0)
{
rev=rev*10+(n%10);
n/=10;
}
rev=a<0?-rev:rev;
write(newsockfd,&rev,sizeof(rev));
}

close(sockfd);
return 0;
}

Client.c

#include <stdio.h>
#include <sys/socket.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
int main(int argc, char const *argv[])
{
int sockfd,m,a,b,ch;
struct sockaddr_in cli_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
char buff1[256],buff2[256];
if(sockfd<0)
perror("Error in socket creation");
bzero((char *)&cli_addr,sizeof(cli_addr));
cli_addr.sin_family=AF_INET;
cli_addr.sin_addr.s_addr=inet_addr(argv[1]);
cli_addr.sin_port=htons(atoi(argv[2]));
if(connect(sockfd,(struct sockaddr *)&cli_addr,sizeof(cli_addr))<0)
{
perror("Error in connection establishment");
return 1;
}
do
{
printf("Enter a\n");
scanf("%d",&a);
write(sockfd,&a,sizeof(a));

read(sockfd,&m,sizeof(m));
printf("server sent reverse number is=%d\n", m);
printf("Do you want to send more number.Press 1 for yes 0 for no\n");
scanf("%d",&ch);
}while(ch==1);
return 0;
}
Server:-

Client:-

You might also like