0% found this document useful (0 votes)
14 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)
14 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
You are on page 1/ 28

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