0% found this document useful (0 votes)
0 views15 pages

CN Lab

The document contains multiple code examples demonstrating various networking protocols including TCP, UDP, and FTP. Each section includes a server and client implementation for different experiments, showcasing functionalities such as message sending, receiving, and file transfer. Additionally, there are examples of routing algorithms and packet management techniques.

Uploaded by

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

CN Lab

The document contains multiple code examples demonstrating various networking protocols including TCP, UDP, and FTP. Each section includes a server and client implementation for different experiments, showcasing functionalities such as message sending, receiving, and file transfer. Additionally, there are examples of routing algorithms and packet management techniques.

Uploaded by

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

EXP 3 :TCP

SERVER

#include<stdio.h>
#include<sys/socket.h>
#include<arpa/inet.h>//inet_addr
int main(int argc,char*argv[])
{
int socket_desc,new_socket,c;
char message[2000];
struct sockaddr_in server,client;
socket_desc=socket(AF_INET,SOCK_STREAM,0);
if(socket_desc==-1)
{
printf("Could not create socket");
}
server.sin_family=AF_INET;
server.sin_addr.s_addr=INADDR_ANY;
server.sin_port=htons(8888);
if(bind(socket_desc,(struct sockaddr*)&server,sizeof(server))<0)
{
puts("bind failed");
}
puts("bind done");
//Listen
listen(socket_desc,3);
//Accept an incoming connection
puts("Waiting for incoming connections....");
c=sizeof(struct sockaddr_in);
new_socket=accept(socket_desc,(struct sockaddr*)&client,(socklen_t*)&c);
if(new_socket<0)
{
perror("accept failed");
}
puts("Connection Accepted");
if(recv(new_socket,message,2000,0)>0)
{
puts("recv failed");
//puts(message);
}
puts(message);
puts("MESSAGE RECIEVED\n");
return 0;
}
CLIENT

#include<stdio.h>
#include<sys/socket.h>
#include<string.h>
#include<arpa/inet.h>//inet_addr
int main(int argc,char*argv[])
{
int socket_desc;
char*message;
struct sockaddr_in server;
//create socket
socket_desc=socket(AF_INET,SOCK_STREAM,0);
if(socket_desc==-1)
{
printf("Could not create socket");
}
server.sin_addr.s_addr=inet_addr("127.0.0.1");
server.sin_family=AF_INET;
server.sin_port=htons(8888);
//connect to remote server
if(connect(socket_desc,(struct sockaddr*)&server,sizeof(server))<0)
{
puts("connect error");
return 1;
}
puts("connected");
//sending message to server
message="Hai 456789\r\n\r\n";
puts("Sending Message....");
if(send(socket_desc,message,strlen(message),0)<0)
{
puts("Send failed");
return 1;
}
//sleep(1);
return 0;
}

EXP 4.A:UDP

SERVER

#include<stdio.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<string.h>
#include<arpa/inet.h>//inet_addr
int main(int argc,char*argv[])
{
char message[2000];
struct sockaddr_in si_me,si_other;
int socket_desc,slen=sizeof(si_other),recv_len,i;
socket_desc=socket(AF_INET,SOCK_DGRAM,0);
if(socket_desc==-1)
{
printf("could not create socket");
}
si_me.sin_family=AF_INET;
si_me.sin_addr.s_addr=INADDR_ANY;
si_me.sin_port=htons(8888);
if(bind(socket_desc,(struct sockaddr*)&si_me,sizeof(si_me))<0)
{
puts("bind failed");
}
puts("bind done");
//keep listening for data
while(1)
{
printf("waiting for data......");
fflush(stdout);
strcpy(message,"");
//try to receive some data,this is a blocking call
if((recv_len=recvfrom(socket_desc,message,2000,0,(struct sockaddr*)&si_other,&slen))==-1)
{
perror("recvfrom()");
}
//print details of the client/peer and the data received
printf("Received packet from %s:%d\n",inet_ntoa(si_other.sin_addr),ntohs(si_other.sin_port));
for(i=0;i<recv_len;i++)
putchar(message[i]);
putchar('\n');
//now reply the client with the same data
if(sendto(socket_desc,message,recv_len,0,(struct sockaddr*)&si_other,slen)==-1)
{
perror("sendto()");
}
}
//close(socket_desc);
return 0;
}

CLIENT

#include<stdio.h>
#include<sys/socket.h>
#include<string.h>
#include<stdlib.h>
#include<arpa/inet.h>//inet_addr
int main(int argc,char*arg[])
{
struct sockaddr_in si_other;
//create socket
int s,i,slen=sizeof(si_other);
char buf[2000];
char message[2000];
if((s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1)
{
perror("socket");
}
memset((char*)&si_other,0,sizeof(si_other));
si_other.sin_family=AF_INET;
si_other.sin_port=htons(8888);
if(inet_aton("127.0.0.1",&si_other.sin_addr)==0)
{
fprintf(stderr,"inet_aton()failed\n");
exit(1);
}
while(1)
{
printf("Enter Message\n");
fscanf(stdin,"%s",message);
//send the message
if(sendto(s,message,strlen(message),0,(struct sockaddr*)&si_other,slen)==-1)
{
perror("sendto()");
}
//receive a reply and print it
//clear the buffer by filling it with null,it might have previously received data
memset(buf,'\0',2000);
//try to receive some data,this is a blocking call
if(recvfrom(s,buf,2000,0,(struct sockaddr*)&si_other,&slen)==-1)
{
perror("recvfrom()");
}
puts(buf);
}
return 0;
}

EXP 4.B:CTSA UDP

SERVER

#include<stdio.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<string.h>
#include<time.h>
#include<arpa/inet.h>//inet_addr
int main(int argc,char*argv[])
{
char message[2000];
struct sockaddr_in si_me,si_other;
int socket_desc,slen=sizeof(si_other),recv_len,i;
time_t t=time(NULL);
struct tm tm=*localtime(&t);
socket_desc=socket(AF_INET,SOCK_DGRAM,0);
if(socket_desc==-1)
{
printf("Could not create socket");
}
si_me.sin_family=AF_INET;
si_me.sin_addr.s_addr=INADDR_ANY;
si_me.sin_port=htons(8888);
if(bind(socket_desc,(struct sockaddr*)&si_me,sizeof(si_me))<0)
{
puts("bind failed");
}
puts("bind done");
//keep listening for data
while(1)
{
printf("Waiting for data......\n");
fflush(stdout);
strcpy(message,"");
memset(message,'\0',2000);
//try to receive some data,this is a blocking call
if((recv_len=recvfrom(socket_desc,message,2000,0,(struct sockaddr*)&si_other,&slen))==-1)
{
perror("recvfrom()");
}
//checking commands
if(strcmp(message,"date")==0)
{
//sprintf(s,"%d",i);
sprintf(message,"Date:%d-%d-%d\
n",tm.tm_year+1900,tm.tm_year+1900,tm.tm_mon+1,tm.tm_mday);
//printf("Time:%d:%d:%d\n",tm.tm_hour,tm.tm_min,tm.tm_sec);
}
else if(strcmp(message,"time")==0)
{
//sprintf(s,"%d",i);
//sprintf("Date:%d-%d-%d\n",tm.tm_year+1900,tm.tm_mon+1,tm.tm_mday);
sprintf(message,"Time:%d:%d:%d\n",tm.tm_hour,tm.tm_min,tm.tm_sec);
}
puts(message);
//now reply the client with the same data
if(sendto(socket_desc,message,2000,0,(struct sockaddr*)&si_other,slen)==-1)
{
perror("sendto()");
}
}
//close(socket_desc);
return 0;
}

CLIENT

#include<stdio.h>
#include<sys/socket.h>
#include<string.h>
#include<stdlib.h>
#include<arpa/inet.h>//inet_addr
int main(int argc,char*argv[])
{
struct sockaddr_in si_other;
//create socket
int s,i,slen=sizeof(si_other);
char buf[2000];
char message[2000];
if((s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1)
{
perror("socket");
}
memset((char*)&si_other,0,sizeof(si_other));
si_other.sin_family=AF_INET;
si_other.sin_port=htons(8888);
if(inet_aton("127.0.0.1",&si_other.sin_addr)==0)
{
fprintf(stderr,"inet_aton()failed\n");
exit(1);
}
while(1)
{
printf("Enter Command:(date/time)\n");
fscanf(stdin,"%s",message);
//send the message
if(sendto(s,message,strlen(message),0,(struct sockaddr*)&si_other,slen)==-1)
{
perror("sendto()");
}
//receive a reply and print it
//clear the buffer by filling it with null,it might have previously received data
memset(buf,'\0',2000);
//try to receive some data,this is a blocking call
if(recvfrom(s,buf,2000,0,(struct sockaddr*)&si_other,&slen)==-1)
{
perror("recvfrom()");
}
puts(buf);
}
return 0;
}
EXP 5:SWP

SERVER

#include<stdio.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<string.h>
#include<arpa/inet.h>
int main(int argc,char*argv[])
{
char message[2000];
char msg[2000];
int i,j,noframe,x,x1=10,x2;
noframe=10;
i=1;
j-1;
struct sockaddr_in si_me,si_other;
int socket_desc,slen=sizeof(si_other),recv_len;
socket_desc=socket(AF_INET,SOCK_DGRAM,0);
if(socket_desc==-1)
{
printf("could not create socket");
}
si_me.sin_family=AF_INET;
si_me.sin_addr.s_addr=INADDR_ANY;
si_me.sin_port=htons(8888);
if(bind(socket_desc,(struct sockaddr*)&si_me,sizeof(si_me))<0)
{
puts("bind failed");
}
puts("\nbind done");
while(1)
{
printf("Waiting for data...");
fflush(stdout);
strcpy(message,"");
memset(message,'\0',2000);
if((recv_len=recvfrom(socket_desc,message,2000,0,(struct sockaddr*)&si_other,&slen))==-1)
{
perror("recvfrom()");
}
puts(message);
while(noframe>0)
{
sprintf(msg,"\n ack for frames %d\n",j);
if(sendto(socket_desc,msg,2000,0,(struct sockaddr*)&si_other,slen)==-1)
{
perror("sendto()");
}
noframe=noframe-1;
j++;
}
}
return 0;
}

CLIENT

#include<stdio.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<string.h>
#include<arpa/inet.h>
int main(int argc,char*argv[])
{
struct sockaddr_in si_other;
int s,slen=sizeof(si_other);
char buf[2000];
char message[2000];
int i,j,noframe,x,x1=10,x2;
noframe=10;
i-1;
j=1;
if((s=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP))==-1)
{
perror("socket");
}
memset((char*)&si_other,0,sizeof(si_other));
si_other.sin_family=AF_INET;
si_other.sin_port=htons(8888);
if(inet_aton("127.0.0.1",&si_other.sin_addr)==0)
{
fprintf(stderr,"inet_aton()failed\n");
exit(1);
}
printf("number of frames is %d\n",noframe);
while(noframe>0)
{
printf("sending frame is %d\n",i);
sprintf(message,"frame %d receivde \n",i);
x=rand()%10;
if(x%10==0)
{
for(x2=1;x2<2;x2++)
{
printf("\nwaiting for %d seconds \n",x2);
sleep(x2);
}
printf("\n sending frame %d\n",i);
x=rand()%10;
}
noframe=noframe-1;
i++;
j++;
if(sendto(s,message,strlen(message),0,(struct sockaddr*)&si_other,slen)==-1)
{
perror("sendto()");
}
if(recvfrom(s,buf,2000,0,(struct sockaddr*)&si_other,&slen)==-1)
{
perror("recvfrom()");
}
puts(buf);
}
}

EXP 6:DVRP

#include<stdio.h>
struct node
{
unsigned dist[20];
unsigned from[20];
}rt[10];
int main()
{
int costmat[20][20];
int nodes,i,j,k,count=0;
printf("\nEnter the number of nodes:" );
scanf("%d",&nodes);
printf("\nEnter the cost matrix:\n");
for(i=0;i<nodes;i++)
{
for(j=0;j<nodes;j++)
{
scanf("%d",&costmat[i][j]);
costmat[i][i]=0;
rt[i].dist[j]=costmat[i][j];
rt[i].from[j]=j;
}
}
do
{
count=0;
for(i=0;i<nodes;i++)
{
for(j=0;j<nodes;j++)
{
for(k=0;k<nodes;k++)
{
if(rt[i].dist[j]>costmat[i][k]+rt[k].dist[j])
{
rt[i].dist[j]=rt[i].dist[k]+rt[k].dist[j];
rt[i].from[j]=k;
count++;
}
}
}
}
}
while(count!=0);
{
for(i=0;i<nodes;i++)
{
printf("\n\nFor router %d\n",i+1);
for(j=0;j<nodes;j++)
printf("\t\nnode %d via %d Distance %d",j+1,rt[i].from[j]+1,rt[i].dist[j]);
}
printf("\n\n");
//getch();
}
}

EXP 7:FTP

SERVER

#include<stdio.h>
#include<sys/socket.h>
#include<arpa/inet.h> //inet_addr
#include<string.h>
#include<fcntl.h>

int main(int argc, char *argvn)


{
int socket_desc, new_socket, c;
char filename[2000], message[2000];
FILE *fp;
struct sockaddr_in server, client;

socket_desc = socket(AF_INET, SOCK_STREAM, 0);


if (socket_desc == -1)
{
printf("Could not create socket");
}

printf("Socket created\n");
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(8888);

if (bind(socket_desc, (struct sockaddr*)&server, sizeof(server)) < 0)


{
puts("Bind failed");
return 1;
}
puts("Bind done");

listen(socket_desc, 3);
puts("Waiting for incoming connections...");
c = sizeof(struct sockaddr_in);
new_socket = accept(socket_desc, (struct sockaddr*)&client, (socklen_t*)&c);
if (new_socket < 0)
{
perror("Accept failed");
}

puts("Connection accepted");

while (1)
{
recv(new_socket, filename, 2000, 0);
fp = fopen(filename, "r");
if (fp == NULL)
{
strcpy(message, "File Not Found\r\n");
send(new_socket, message, 2000, 0);
strcpy(message, "EOF");
}
else
{
while (fgets(message, 2000, fp))
{
send(new_socket, message, 2000, 0);
puts(message);
}
fclose(fp);
}
strcpy(message, "EOF");
send(new_socket, message, 2000, 0);
}

return 0;
}

CLIENT

#include<stdio.h>
#include<string.h>
//#include<unistd.h>
#include<sys/socket.h>
#include<arpa/inet.h> //inet_addr

int main(int argc, char *argv[])


{
int socket_desc;
char message[2000], filename[2000];
struct sockaddr_in server;
FILE *fp;
socket_desc = socket(AF_INET, SOCK_STREAM, 0);
if (socket_desc == -1)
{
printf("Could not create socket");
}

server.sin_addr.s_addr = inet_addr("127.0.0.1");
server.sin_family = AF_INET;
server.sin_port = htons(8888);
if (connect(socket_desc, (struct sockaddr*)&server, sizeof(server)) < 0)
{
puts("Connect error");
return 1;
}

puts("Connected");

do
{
//memset(message, '\n', 2000);
puts("FileName:");
//scanf(stdin, "%s", filename);
scanf("%s", filename);
if (send(socket_desc, filename, strlen(filename), 0) < 0)
{
puts("Send failed");
return 1;
}

fp = fopen("backup", "w");
while (recv(socket_desc, message, 2000, 0))
{
if (strcmp(message, "EOF"))
{
fputs(message, fp);
puts(message);
}
else
{
fclose(fp);
break;
}
}
} while (1);
//sleep(1);
return 0;
}
EXP 8:LEAKY

#include<stdio.h>
#include<string.h>
int main()
{
int no_of_queries, storage, output_pkt_size;
int input_pkt_size, bucket_size, size_left;
storage = 0;
no_of_queries = 4;
bucket_size = 10;
input_pkt_size = 4;
output_pkt_size = 1;
for(int i = 0; i < no_of_queries; i++)
{
size_left = bucket_size - storage;
if(input_pkt_size <= size_left)
{
storage += input_pkt_size;
printf("Buffer size = %d out of bucket size = %d\n", storage, bucket_size);
} else
{
printf("Packet loss = %d\n", (input_pkt_size - size_left));
storage = bucket_size;
printf("Buffer size = %d out of bucket size = %d\n", storage, bucket_size);
}
storage -= output_pkt_size;
}
return 0;
}

EXP10:NS2

set val(stop) 10.0 ;


set ns [new Simulator]
set tracefile [open out.tr w]
$ns trace-all $tracefile
set namfile [open out.nam w]
$ns namtrace-all $namfile

set n0 [$ns node]


set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
set n4 [$ns node]
set n5 [$ns node]

$n0 label "ping0"


$n1 label "ping1"
$n2 label "R1"
$n3 label "R2"
$n4 label "ping4"
$n5 label "ping5"

$ns color 1 red


$ns color 2 blue
$ns color 3 green
$ns color 4 orange

$ns duplex-link $n0 $n2 1Mb 10ms DropTail


$ns duplex-link $n1 $n2 0.4Mb 10ms DropTail
$ns duplex-link $n2 $n3 4kb 10ms DropTail
$ns duplex-link $n3 $n4 1Mb 10ms DropTail
$ns duplex-link $n3 $n5 1Mb 10ms DropTail

$ns duplex-link-op $n0 $n2 orient right-down


$ns duplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right
$ns duplex-link-op $n3 $n4 orient right-up
$ns duplex-link-op $n3 $n5 orient right-down

set ping0 [new Agent/Ping]


$ns attach-agent $n0 $ping0

set ping1 [new Agent/Ping]


$ns attach-agent $n1 $ping1

set ping4 [new Agent/Ping]


$ns attach-agent $n4 $ping4

set ping5 [new Agent/Ping]


$ns attach-agent $n5 $ping5

$ns connect $ping0 $ping4


$ns connect $ping1 $ping5

proc sendPingPacket {} {
global ns ping0 ping1
set intervalTime 0.001
set now [$ns now]
$ns at [expr $now + $intervalTime] "$ping0 send"
$ns at [expr $now + $intervalTime] "$ping1 send"
$ns at [expr $now + $intervalTime] "sendPingPacket"
}
Agent/Ping instproc recv {from rtt} {
global seq
$self instvar node_
puts "The node [$node_ id] received an ACK from the node $from with RTT $rtt ms"
}

$ping0 set class_ 1


$ping1 set class_ 2
$ping4 set class_ 3
$ping5 set class_ 4
proc finish {} {
global ns tracefile namfile
$ns flush-trace
close $tracefile
close $namfile
exec nam out.nam &
exit 0
}

$ns at 0.01 "sendPingPacket"


$ns at 10.0 "finish"
$ns run

You might also like