0% found this document useful (0 votes)
22 views28 pages

CN Lab Program

The document discusses creating various types of sockets in C including stream and datagram sockets in local and IP namespaces. It also includes examples of TCP echo client/server programs and a concurrent TCP echo server.

Uploaded by

somnathmaity311
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)
22 views28 pages

CN Lab Program

The document discusses creating various types of sockets in C including stream and datagram sockets in local and IP namespaces. It also includes examples of TCP echo client/server programs and a concurrent TCP echo server.

Uploaded by

somnathmaity311
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

1)Create a stream socket in local name space using c program?

#include <unistd.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <stdio.h>

#include <stdlib.h>

int main(void){

int sd;

sd = socket(PF_UNIX, SOCK_STREAM, 0);

if(sd==-1){

perror("socket-call"); exit(1);

printf("pid = %u \n",getpid() );

printf("descriptor = %u \n",sd);

while(1){sleep(1);}

------------------------------------------------------------------------------------

2)** Datagram socket in local name space

#include <unistd.h>

#include <sys/socket.h>

#include <sys/types.h>

#include <stdio.h>

#include <stdlib.h>

int main(void){

int sd;

sd = socket(PF_UNIX, SOCK_DGRAM, 0);

if(sd==-1){

perror("socket-call"); exit(1);

}
printf("pid = %u \n",getpid() );

printf("descriptor = %u \n",sd);

while(1){sleep(1);}

-------------------------------------------------------------------------------------

3)** Stream socket in ip/4 name space

#include<stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include<stdlib.h>

#include <unistd.h>

#include <arpa/inet.h>

int main(void){

int sd , n;

sleep(1);

sd=socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);

if(sd==-1)

perror("Socket-call");

exit(1);

printf("pid=%u\n",getpid());

printf("descriptor=%u\n",sd);

n = listen( sd, 1 );

if ( n == -1 ) { perror("listen"); exit(1); }

while(1)

sleep(1);

} return 0;}
--------------------------------------------------------------------------------------

4)** Datagram socket ip/4 name space (UDP socket)

#include<stdio.h>

#include <sys/types.h>

#include <sys/socket.h>

#include<stdlib.h>

#include <unistd.h>

#include <arpa/inet.h>

int main(void){

int sd , n;

sleep(1);

sd=socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP);

if(sd==-1)

perror("Socket-call");

exit(1);

printf("pid=%u\n",getpid());

printf("descriptor=%u\n",sd);

while(1) {sleep(1);}

return 0;

------------------------------------------------------------------------------------------------
5)** TCP ECHO client and server program architechture

// client program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define BUFFERSIZE 200 // arbitrary

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

int cd,i,n,j;

char buffer[BUFFERSIZE];

struct sockaddr_in client; // An IPv4 address

if( argc != 3 )

printf("Usage: %s server-address server-port \n", argv[0] );

exit(1);

printf( "TCP-echo-client starting...\n" );

// A TCP (IPv4 stream) socket is created

cd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

//if( cd == -1)

client.sin_family = AF_INET;

client.sin_port=htons(atoi(argv[2]));
n = inet_aton( argv[1],&(client.sin_addr));

n=connect(cd,(struct sockaddr *)&client,sizeof(client));

while (1){

write (1,"\nEnter String:",15);

memset(buffer,'\0', BUFFERSIZE );

i=read (0,buffer,BUFFERSIZE);

printf( "bytes read from keyboard=%u\n", i );

j=write(cd,buffer,i);

printf("bytes written in server's socket=%u\n",j);

memset(buffer,'\0',BUFFERSIZE );

i= read(cd,buffer,BUFFERSIZE);

write(1,"replay from echo server:",24);

write(1,buffer,i);

return 0;

----------------------------------------

6)// server program:

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>
#define SIZE 200 // arbitrary

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

int sd,i,newd,n,k;

//

char a[SIZE];

char buffer[SIZE];

socklen_t length;

struct sockaddr_in server,client; // An IPv4 address

printf( "TCP-echo-server starting...\n" );

// A TCP (IPv4 stream) socket is created

sd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

//if( sd == -1)

server.sin_family = AF_INET;

server.sin_port=htons(atoi(argv[2]));

n = inet_aton( argv[1],&(server.sin_addr));

n = bind( sd, (struct sockaddr *)&server,sizeof(server));

n=listen(sd,5);

length=sizeof(client);

newd=accept(sd, (struct sockaddr *)&client,&length);

while (1){

//write (1,"Enter the string.",17);

memset( buffer, '\0', SIZE );

i=read (newd,buffer,SIZE);

write(1,"recive from client:",19);


k=0;

for(n=i-1;n>=0;n--){

a[k++]=buffer[n];

a[k]='\0';

printf("%s\n",buffer);

// printf (" \n After the reverse of a string: %s ", strrev(str));

//write(newd,buffer,i);

write(newd,a,i);

return 0;

--------------------------------------------------------------------------------------------------

7) Write a program print client ip address and port number using TCP echo server String given by client

// client program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define SIZE 200 // arbitrary


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

int sd,i,newd,n,k;

//

char a[SIZE];

char buffer[SIZE];

socklen_t length;

struct sockaddr_in server,client; // An IPv4 address

printf( "TCP-echo-server starting...\n" );

// A TCP (IPv4 stream) socket is created

sd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

//if( sd == -1)

server.sin_family = AF_INET;

server.sin_port=htons(atoi(argv[2]));

n = inet_aton( argv[1],&(server.sin_addr));

n = bind( sd, (struct sockaddr *)&server,sizeof(server));

n=listen(sd,5);

length=sizeof(client);

newd=accept(sd, (struct sockaddr *)&client,&length);

while (1){

//write (1,"Enter the string.",17);

memset( buffer, '\0', SIZE );

i=read (newd,buffer,SIZE);
write(1,"recive from client:",19);

k=0;

for(n=i-1;n>=0;n--){

a[k++]=buffer[n];

a[k]='\0';

printf("%s\n",buffer);

printf("client ip address is <%s>\n",inet_ntoa(client.sin_addr));

printf("client port is <%d>\n",ntohs(client.sin_port));

write(newd,a,i);

return 0;

------------------------------------------

8)server program previes program

-----------------------------------------------------------------------------------

9*) write a program TCp echo concurrent server

server program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>
#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define SIZE 200 // arbitrary

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

int sd,i,newd,n,k;

//

// char a[SIZE];

char buffer[SIZE];

socklen_t length;

struct sockaddr_in server,client; // An IPv4 address

printf( "TCP-echo-server starting...\n" );

// A TCP (IPv4 stream) socket is created

sd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

server.sin_family = AF_INET;

server.sin_port=htons(atoi(argv[2]));

n = inet_aton( argv[1],&(server.sin_addr));

n = bind( sd, (struct sockaddr *)&server,sizeof(server));


n=listen(sd,20);

length=sizeof(client);

while(1){

newd=accept(sd, (struct sockaddr *)&client,&length);

pid_t pid = fork();

if(pid == 0){

while (1){

n=read(newd,buffer,SIZE);

write(1,"Received from client:",20);

printf("%s\n",buffer);

write(newd,buffer,n);

return 0;

---------------------------------------------------------------------------------------------------------

10)))Write a program tcp Date time client server program ?

server program::

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>
#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include<time.h>

#define SIZE 200 // arbitrary

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

int sd,i,newd,n,k;

char a[SIZE];

time_t t,T;

char *time1;

char buffer[SIZE];

socklen_t length;

char date_string[25];

struct sockaddr_in server,client;

printf( "TCP-echo-server starting...\n" );

sd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

server.sin_family = AF_INET;

length=sizeof(client);

newd=accept(sd, (struct sockaddr *)&client,&length);


server.sin_port=htons(atoi(argv[2]));

n = inet_aton( argv[1],&(server.sin_addr));

n = bind( sd, (struct sockaddr *)&server,sizeof(server));

n=listen(sd,5);

length=sizeof(client);

newd=accept(sd, (struct sockaddr *)&client,&length);

memset( buffer, '\0', SIZE );

T=time(&t);

printf("No of seconds=%lu\n",T);

time1=ctime(&t);

printf("string format %s\n",time1);

write(STDOUT_FILENO,"Seconds since Epoch using [date] command = ",

43 );

system("/bin/date +%s");

printf("before [ctime] call, Time zone = %s \n", *tzname );

// following statement copies, date and time in human readable

// form, in [date_string]

strcpy( date_string, ctime( &t) );

printf("after [ctime] call, Time zone = %s \n", *tzname );

i=strlen(time1);

write(newd,time1,i);
printf("after [ctime] call, Time zone = %s \n", *tzname );

printf("date by [ctime] call = %s \n", date_string );

return 0;

---------------------------------------------------------------------------

11)) client program:

#include<stdio.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include<unistd.h>

#define SIZE 200 // arbitrary

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

int cd; // to be used as socket descriptor

int n,i,j;

char buffer[SIZE];

struct sockaddr_in client;

if( argc != 3 )
{

printf("Usage: %s server-address server-port \n", argv[0] );

exit(1);

cd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

if( cd == -1 ) { perror("socket-call"); exit( 1 ); }

client.sin_family = AF_INET;

client.sin_port = htons( atoi(argv[2]) );

n = inet_aton( argv[1], &(client.sin_addr) );

n = connect( cd, (struct sockaddr *) &client,

sizeof(client) );

memset( buffer, '\0', SIZE );

i = read(cd, buffer, SIZE );

if( i == -1 ) { perror("read1"); exit(1); }

j = write( 1, buffer, i );

if( j == -1 ) { perror("write1"); exit(1); }

return 0;

--------------------------------------------------------------------------

Write a program on concurrent daytime client server program

12*) client program


#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define BUFFERSIZE 200 // arbitrary

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

int cd,i,n,j;

char buffer[BUFFERSIZE];

struct sockaddr_in client; // An IPv4 address

if( argc != 3 )

printf("Usage: %s server-address server-port \n", argv[0] );

exit(1);

printf( "TCP-echo-client starting...\n" );

// A TCP (IPv4 stream) socket is created

cd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

//if( cd == -1)
client.sin_family = AF_INET;

client.sin_port=htons(atoi(argv[2]));

n = inet_aton( argv[1],&(client.sin_addr));

n=connect(cd,(struct sockaddr *)&client,sizeof(client));

while (1){

write (1,"Enter the string.",17);

memset( buffer, '\0', BUFFERSIZE );

i=read (0,buffer,BUFFERSIZE);

printf( "bytes read from keyboard=%u\n", i );

j=write(cd,buffer,i);

printf("bytes written in server's socket=%u\n",j);

memset( buffer, '\0', BUFFERSIZE );

i= read(cd,buffer,BUFFERSIZE);

write(1,"replay from echo server",17);

write(1,buffer,i);

return 0;

---------------------------------------------------------------------------------

13))server program::

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>
#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#include<time.h>

#define SIZE 200 // arbitrary

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

int sd,i,newd,n,k;

//

char a[SIZE];

time_t t,T;

char *time1;

char buffer[SIZE];

char date_string[25];

socklen_t length;

struct sockaddr_in server,client; // An IPv4 address

printf( "TCP-echo-server starting...\n" );

// A TCP (IPv4 stream) socket is created

sd = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );

//if( sd == -1)

server.sin_family = AF_INET;

// length=sizeof(client);

// newd=accept(sd, (struct sockaddr *)&client,&length);

server.sin_port=htons(atoi(argv[2]));
n = inet_aton( argv[1],&(server.sin_addr));

n = bind( sd, (struct sockaddr *)&server,sizeof(server));

n=listen(sd,5);

length=sizeof(client);

while(1){

newd=accept(sd, (struct sockaddr *)&client,&length);

pid_t pid = fork();

if(pid == 0){

while (1){

n=read(newd,buffer,SIZE);

write(1,"Received from client:",20);

printf("%s\n",buffer);

write(newd,buffer,n);

memset( buffer, '\0', SIZE );

T=time(&t);

printf("No of seconds=%lu\n",T);

write(STDOUT_FILENO,"Seconds since Epoch using [date] command = ", 43 );

system("/bin/date +%s");

printf("before [ctime] call, Time zone = %s \n", *tzname );

// following statement copies, date and time in human readable

// form, in [date_string]

strcpy( date_string, ctime( &t) );

printf("after [ctime] call, Time zone = %s \n", *tzname );

time1=ctime(&t);

printf("string format %s\n",time1);

i=strlen(time1);

write(newd,time1,i);
}

return 0;

----------------------------------------------------------------------------------------------

write a program tock client program

client program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define BUFFERSIZE 200 // arbitrary

int main(void)

int cd,i,n,j;

char buffer[BUFFERSIZE];

struct sockaddr_in client; // An IPv4 address


int port;

char address[20];

write( 1,"IP address of server ? ", 23 );

scanf( "%s", address );

write( 1,"port number of server ? ", 24 );

scanf("%u", &port );

printf( "TCP-echo-client starting...\n" );

cd = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

client.sin_family = AF_INET;

client.sin_port=htons(port);

n = inet_aton( address,&(client.sin_addr));

n=connect(cd,(struct sockaddr *)&client,sizeof(client));

while (1){

memset( buffer, '\0', BUFFERSIZE );

n = read(cd,buffer,BUFFERSIZE);

write (1,"from Server:", 12);

write(1,buffer,n);

write (1,"\nto server:",11);

memset( buffer, '\0', BUFFERSIZE );

n = read(0,buffer,BUFFERSIZE);

write(cd,buffer,n);

if(strstr(buffer,"quit")) break;
}

return 0;

---------------------------------------------------------------------------------

server program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define SIZE 200 // arbitrary

#define PORT 8000

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

int sd,i,newd,n,k;

char a[SIZE];

char buffer[SIZE];

socklen_t length;

struct sockaddr_in server; // An IPv4 address


printf( "TCP-echo-server starting...\n" );

sd = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );

server.sin_family = AF_INET;

server.sin_port=htons(PORT);

server.sin_addr.s_addr = htonl( INADDR_ANY );

n = bind( sd, (struct sockaddr *)&server,sizeof(server));

n=listen(sd,1);

while (1){

newd=accept(sd,NULL,0);

write(newd,buffer,sizeof(buffer));

while(1){

memset( buffer, '\0', SIZE);

n=read(newd,buffer,SIZE);

if( strstr( buffer, "quit" ) != NULL) break;

write(1,"From client:",12);

write(1,buffer,n);

write(1,"TO client:",10);

memset( buffer, '\0', SIZE);

n=read(0,buffer,SIZE);

write(newd,buffer,n);

}
return 0;

-------------------------------------------------------------------------------------------------------------

write a program UDP client serverr program

server program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <sys/types.h>

#include <sys/socket.h>

#include <netinet/in.h>

#include <arpa/inet.h>

#define SERVER_PORT 50004

#define BUFFERSIZE 512 // no more than this

int main()

int ser_sd;

struct sockaddr_in server_addr, client_addr;

socklen_t clientlength;

char buffer[BUFFERSIZE];

ssize_t i, j ;

int n;
ser_sd=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);

server_addr.sin_family=AF_INET;

server_addr.sin_addr.s_addr=htonl(INADDR_ANY);

server_addr.sin_port=htons(SERVER_PORT);

n=bind(ser_sd,(struct sockaddr *)&server_addr,sizeof(server_addr));

clientlength = sizeof(client_addr);

//while( 1 )

//{

//printf("%s: using UDP port-%u \n", argv[0], SERVER_PORT );

memset( buffer, '\0', BUFFERSIZE );

i = recvfrom(ser_sd,buffer,BUFFERSIZE,0,(struct sockaddr *)&client_addr,&clientlength );

if( i == -1 ) perror("recvfrom-call");

write( 1, "received from client-> ", 23 );

j = sendto(ser_sd,buffer,i,0,(struct sockaddr *)&client_addr,clientlength);

return 0;

---------------------------------------------------------------------------------

client program

#include <stdio.h>

#include <unistd.h>

#include <stdlib.h>

#include <string.h>
#include <sys/socket.h>

#include <arpa/inet.h>

#define SIZE 512

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

int cd; // to be used as socket descriptor

int n;

ssize_t i;

char buffer[SIZE];

struct sockaddr_in server, client;

socklen_t len;

socklen_t len1;

if( argc != 5 )

printf("usage -> prog-name server-address server-port \n");

printf("example -> %s 192.168.5.58 7 \n", argv[0] );

exit(1);

cd=socket( AF_INET,SOCK_DGRAM,IPPROTO_UDP);

if( cd == -1 ) { perror("socket-call"); exit(1); }

//initializing the members of local address


client.sin_family = AF_INET;

n = inet_aton( argv[3], &(client.sin_addr));

if( n == 0 ) { perror("invalid-address"); exit(1); }

client.sin_port = htons(atoi(argv[4]));

n = bind(cd,(struct sockaddr *) &client,sizeof(struct sockaddr));

if( n == -1 ) { perror("bind-call"); exit(1); }

//initializing the members of remote address

server.sin_family = AF_INET;

n = inet_aton( argv[1], &(server.sin_addr));

if( n == 0 ) { perror("invalid-address"); exit(1); }

server.sin_port = htons(atoi(argv[2]));

write(1,"Enter a string: ", 16 );

memset( buffer, '\0', SIZE );

i = read(0, buffer, SIZE );

len=sizeof(struct sockaddr);

n = sendto( cd, buffer, i, 0, (struct sockaddr *)&server,len);

if( n == -1 ) { perror("sendto-call"); exit(1); }

memset( buffer, '\0', SIZE );

len1 = sizeof(struct sockaddr);

n = recvfrom( cd, buffer,SIZE,0,(struct sockaddr *)&server,&len1);

if( n == -1 ) { perror("recvfrom-call-full"); exit(1); }

write( 1, "From server->", 13 );

write( 1, buffer, n );
//shutdown( cd, SHUT_RDWR );

return 0;

You might also like