0% found this document useful (0 votes)
27 views7 pages

CN Lab Codes

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views7 pages

CN Lab Codes

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

Q)1 way multiple time communication using pipe

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>
void main()
{
int fd[2],pid=0;
char message[1024],buffer[1024];
if(pipe(fd)==-1)
{
perror("pipe creation failed\n");
exit(0);
}
pid=fork();
if(pid>0)
{
close(fd[0]);
while(1)
{
memset(message,0,sizeof(message));
sleep(1);
printf("enter message for child:");
gets(message);
write(fd[1],message,1024);
if(strcmp(message,"exit")==0)
break;
}
}
else
{
close(fd[1]);
while(1)
{
memset(buffer,0,sizeof(buffer));
read(fd[0],buffer,1024);
printf("received data from parent:%s\n",buffer);
if(strcmp(buffer,"exit")==0)
break;
}
}
}

Q)2 way multiple time communication using pipe


#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>
void main(){
int fd1[2],fd2[2];
char message[1024],buffer[1024];
int pid=0;
if(pipe(fd1)==-1){
perror("Pipe Creation Failed \n");
exit(0);
}
if(pipe(fd2)==-1){
perror("Pipe Creation Failed \n");
exit(0);
}
pid=fork();
if(pid>0){
close(fd1[0]);
close(fd2[1]);
while(1){
memset(message,0,sizeof(message));
printf("Write data for child: ");
gets(message);
write(fd1[1],message,1024);
if(strcmp(message,"exit")==0) break;
memset(buffer,0,sizeof(buffer));
read(fd2[0],buffer,1024);
printf("Recieved data from child: %s \n",buffer);
if(strcmp(buffer,"exit")==0) break;
}
}
else{
close(fd1[1]);
close(fd2[0]);
while(1){
memset(buffer,0,sizeof(buffer));
read(fd1[0],buffer,1024);
printf("Received data from parent: %s\n ",buffer);
if(strcmp(buffer,"exit")==0) break;
memset(message,0,sizeof(message));
printf("Write data for parent:");
gets(message);
write(fd2[1],message,1024);
if(strcmp(message,"exit")==0) break;
}
}
}

Q3)2 way multiple time communication using tcp/ip


TCP SERVER
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#define PORT 8090
void main()
{ int opt=1;
int svrsock_fd,new_conn;
char buffer[1024],message[1024];
struct sockaddr_in address;
socklen_t addrlen=sizeof(struct sockaddr_in);
svrsock_fd=socket(AF_INET,SOCK_STREAM,0);
address.sin_family=AF_INET;
address.sin_addr.s_addr=INADDR_ANY;
address.sin_port=htons(PORT);
setsockopt(svrsock_fd,SOL_SOCKET,SO_REUSEADDR|SO_REUSEPORT,opt,&opt);
bind(svrsock_fd,(struct sockadddr*)&address,addrlen);
printf("waiting for client\n");
listen(svrsock_fd,3);
new_conn=accept(svrsock_fd,(struct sockaddr*)&address,&addrlen);
while(1)
{
memset(buffer,0,sizeof(buffer));
read(new_conn,buffer,1024);
printf("received data from TCP/IP client:%s\n",buffer);
if(strcmp(buffer,"exit")==0)break;
memset(message,0,sizeof(message));
printf("enter data for TCP/IP client:");
gets(message);
send(new_conn,message,strlen(message),0);
if(strcmp(message,"exit")==0)break;
}
}

TCP CLIENT
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#define PORT 8090
void main()
{
int clnsock_fd;
char buffer[1024],message[1024];
struct sockaddr_in svraddr;
socklen_t svraddrlen=sizeof(struct sockaddr_in);
clnsock_fd=socket(AF_INET,SOCK_STREAM,0);
svraddr.sin_family=AF_INET;
svraddr.sin_addr.s_addr=inet_addr("127.0.0.1");
svraddr.sin_port=htons(PORT);
connect(clnsock_fd,(struct sockadddr*)&svraddr,svraddrlen);
while(1)
{
memset(message,0,sizeof(message));
printf("enter data for TCP/IP server:");
gets(message);
send(clnsock_fd,message,strlen(message),0);
if(strcmp(message,"exit")==0)break;
memset(buffer,0,sizeof(buffer));
read(clnsock_fd,buffer,1024);
printf("received data from TCP/IP server:%s\n",buffer);
if(strcmp(buffer,"exit")==0)break;

}
}

Q4)UDP CONNECTION 2 way


UDP SERVER
#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#define PORT 8080
void main()
{char buffer[1024],message[1024];
int svrsock_fd;
struct sockaddr_in svraddr,clnaddr;
socklen_t svraddrlen=sizeof(struct sockaddr_in);
socklen_t clnaddrlen=sizeof(struct sockaddr_in);
svrsock_fd=socket(AF_INET,SOCK_DGRAM,0);
svraddr.sin_family=AF_INET;
svraddr.sin_addr.s_addr=INADDR_ANY;
svraddr.sin_port=htons(PORT);
bind(svrsock_fd,(struct sockaddr *)&svraddr,svraddrlen);
printf("WAITING FOR UDP/IP CLIENT\n");
while(1)
{
memset(buffer,0,sizeof(buffer));
recvfrom(svrsock_fd,buffer,sizeof(buffer),0,&clnaddr,&clnaddrlen);
printf("received data from UDP/IP CLIENT:%s\n",buffer);
if(strcmp(buffer,"exit")==0)break;
memset(message,0,sizeof(message));
printf("enter data for UDP/IP client:");
gets(message);
sendto(svrsock_fd,message,sizeof(message),0,&clnaddr,clnaddrlen);
if(strcmp(message,"exit")==0)break;
}
}

UDP CLIENT
#include<stdio.h>
#include<unistd.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#define PORT 8080
void main()
{char message[1024],buffer[1024];
int clnsock_fd;
struct sockaddr_in svraddr,clnaddr;
socklen_t svraddrlen=sizeof(struct sockaddr_in);
socklen_t clnaddrlen=sizeof(struct sockaddr_in);
clnsock_fd=socket(AF_INET,SOCK_DGRAM,0);
svraddr.sin_family=AF_INET;
svraddr.sin_addr.s_addr=inet_addr("127.0.0.1");
svraddr.sin_port=htons(PORT);
while(1)
{
memset(message,0,sizeof(message));
printf("enter data for UDP/IP server:");
gets(message);
sendto(clnsock_fd,message,sizeof(message),0,&svraddr,svraddrlen);
if(strcmp(message,"exit")==0)break;
memset(buffer,0,sizeof(buffer));
recvfrom(clnsock_fd,buffer,sizeof(buffer),0,&svraddr,&svraddrlen);
printf("received data from UDP/IP server:%s\n",buffer);
if(strcmp(buffer,"exit")==0)break;
}
}

You might also like