You are on page 1of 21

1

// A program to create Socket and print Sockfd on successful creation of socket

#include<sys/types.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

int main()

int fd,fd1;

if(fd=socket(AF_INET,SOCK_STREAM,0))<0)

perror(“socket”);

exit(0);

printf(“Stream socket descriptor : %d”, fd);

if(fd1=socket(AF_INET,SOCK_DGRAM,0))<0)

perror(“socket”);

exit(0);

printf(“Data Gram socket descriptor : %d”, fd1);

return 0;

//A program to fill socket address structure and binding it to socket

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

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

#define MYPORT 5765

int main()

int sockfd;

struct sockaddr_in myaddr;

int len,i;

//Creation of socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)

perror("Socket failed");

exit(1);

//filling the data structure

myaddr.sin_family=AF_INET;

myaddr.sin_port=htons(MYPORT);

myaddr.sin_addr.s_addr=htonl(0l);

//binding socket address structure to socket

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)

perror("bind failed");

exit(1);

}
3
printf(“Bind success”);

//A program get the port number from user and bind to socket

#include<sys/socket.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

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

int sockfd;

struct sockaddr_in myaddr;

int len,i;

if(argc!=2) //check whether user entered port no as command line argument

perror("usage:server port");

exit(1);

//Creation of socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)

perror("Socket failed");

exit(1);

//filling the data structure


4
myaddr.sin_family=AF_INET;

//converting string to integer and filling port no.

myaddr.sin_port=htons(atoi(argv[1]));

myaddr.sin_addr.s_addr=htonl(0l);

//binding socket address structure to socket

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)

perror("bind failed");

exit(1);

printf(“Bind success”);

//A program to make the server socket ready to listen the connection

#include<sys/socket.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

#define MYPORT 5765

int main()

int sockfd;

struct sockaddr_in myaddr;

int len,i;

//Creation of socket
5
if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)

perror("Socket failed");

exit(1);

//filling the data structure

myaddr.sin_family=AF_INET;

myaddr.sin_port=htons(MYPORT);

myaddr.sin_addr.s_addr=htonl(0l);

//binding socket address structure to socket

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)

perror("bind failed");

exit(1);

printf(“Bind success”);

if(listen(sockfd,5)<0)

perror("listen failed");

exit(1);

printf(“Listen success”);

//A program for TCP Echo client-server

//Echo Server program


6
#include<sys/socket.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

#define MYPORT 5765

int main()

int sockfd,newfd,nbytes;

struct sockaddr_in myaddr;

char buff[512],temp,buff1[512];

int len,i;

//Creation of socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)

perror("Socket failed");

exit(1);

//filling the data structure

myaddr.sin_family=AF_INET;

myaddr.sin_port=htons(MYPORT);

myaddr.sin_addr.s_addr=htonl(0l);

//binding socket address structure to socket

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)

perror("bind failed");
7
exit(1);

printf(“Bind success”);

if(listen(sockfd,5)<0)

perror("listen failed");

exit(1);

printf(“Listen success”);

for(; ;)

//accept connection request

if((newfd=accept(sockfd,0,0))<0)

perror("accept failed");

exit(1);

// read and write

while((nbytes=read(newfd,buff,512))!=0)

if(nbytes<0)

perror("Read failed");

exit(1);

write(1,buff,nbytes);

if(write(newfd,buff,len)<0)
8
{

perror("write failed");

exit(1);

}//while

}//for

}//main

//Echo client program

#include<sys/socket.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

main(int argc,char *argv[])

int sockfd,newfd,nbytes1,nbytes;

struct sockaddr_in servaddr;

char buff[512];

if(argc!=3)

perror("usage:client,server port");

exit(1);

//creating socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)
9
{

perror("Socket failed");

exit(1);

//filling the data structure

servaddr.sin_family=AF_INET;

servaddr.sin_port=htons(atoi(argv[1]));

servaddr.sin_addr.s_addr=htonl(INADDR_ANY);

//connect system call

if((connect(sockfd,(struct sockaddr*)&servaddr,sizeof(servaddr))<0))

perror("connect failed");

exit(1);

printf(“Connection success ”);

//read and write from keyboard and to monitor respectively

while((nbytes=read(0,buff,512))!=0)

if(nbytes<0)

perror("read1 failed");

exit(1);

if((write(sockfd,buff,nbytes))!=nbytes)

perror("write1 error");
10
exit(1);

//read data from server

if((nbytes1=read(sockfd,buff,512))<0)

perror("read2 failed");

exit(1);

//write data to display on the monitor stdout

if(write(1,buff,nbytes1)!=nbytes1)

perror("write2 failed");

exit(1);

} //while

} //main

//A program for TCP chat client-server

//Chat Server program

#include<sys/socket.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

#define MYPORT 5765

int main()
11
{

int sockfd,newfd,nbytes;

struct sockaddr_in myaddr;

char buff[512],temp,buff1[512];

int len,i;

//Creation of socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)

perror("Socket failed");

exit(1);

//filling the data structure

myaddr.sin_family=AF_INET;

myaddr.sin_port=htons(MYPORT);

myaddr.sin_addr.s_addr=htonl(0l);

//binding socket address structure to socket

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)

perror("bind failed");

exit(1);

printf(“Bind success”);

if(listen(sockfd,5)<0)

perror("listen failed");

exit(1);

}
12
printf(“Listen success”);

for(; ;)

//accept connection request

if((newfd=accept(sockfd,0,0))<0)

perror("accept failed");

exit(1);

// read and write

while((nbytes=read(newfd,buff,512))!=0)

if(nbytes<0)

perror("Read failed");

exit(1);

write(1,buff,nbytes);

printf("Enter response");

scanf("%s",buff1);

len=strlen(buff1);

if(write(newfd,buff1,len)<0)

perror("write failed");

exit(1);

}//while
13
}//for

}//main

//A program for TCP client-server to read a string from client and send reverse string from server

// Server program for reading a string from client and send reverse string to client

#include<sys/socket.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<errno.h>

#include<stdio.h>

#include<stdlib.h>

#define MYPORT 5765

int main()

int sockfd,newfd,nbytes;

struct sockaddr_in myaddr;

char buff[512],temp,buff1[512];

int len,i;

//Creation of socket

if((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)

perror("Socket failed");

exit(1);

//filling the data structure

myaddr.sin_family=AF_INET;

myaddr.sin_port=htons(MYPORT);
14
myaddr.sin_addr.s_addr=htonl(0l);

//binding socket address structure to socket

if(bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr))<0)

perror("bind failed");

exit(1);

printf(“Bind success”);

if(listen(sockfd,5)<0)

perror("listen failed");

exit(1);

printf(“Listen success”);

for(; ;)

//accept connection request

if((newfd=accept(sockfd,0,0))<0)

perror("accept failed");

exit(1);

// read and write

while((nbytes=read(newfd,buff,512))!=0)

if(nbytes<0)

{
15
perror("Read failed");

exit(1);

write(1,buff,nbytes);

strrev(buff);

if(write(newfd,buff,len)<0)

perror("write failed");

exit(1);

}//while

}//for

}//main

/* Program for Echo Client – Server with UDP Echo Server*/

//UDP SERVER(ECHO DATA GRAM PROGRAM)


#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>

main(int argc,char *argv[])


{
int sockfd,addrlen,nbytes;
char buff[512];
char buff1[512];
int i;
struct sockaddr_in myaddr,clntaddr;
if(argc!=2)
{
perror("usage server port");
exit(1);
}
16
if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
{
perror("Socket failed");
exit(1);
}

// fill the server address

myaddr.sin_family=AF_INET;
myaddr.sin_port=htons(atoi(argv[1]));
myaddr.sin_addr.s_addr=htonl(0l);

//bind

if((bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr)))<0)
{
perror("bind failed");
exit(1);
}

//dummy value assignment

addrlen=sizeof(clntaddr);

//recvfrom

if((nbytes=recvfrom(sockfd,buff,512,0,(struct sockaddr*)&clntaddr,&addrlen))<0)
//client address is a value result argument
//tell server to fill the values
{
perror("recvfrom error");
exit(1);
}

for( i = 0;i<nbytes; i++)


buff1[ i ] = toupper( buff[ i ] );
//send to

if((sendto(sockfd,buff1,nbytes,0,(struct sockaddr*)&clntaddr,addrlen))!=nbytes)
{
perror("send to error");
exit(1);
}
}

//UDP CLIENT ECHO UDP CLIENT

#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
17
#include<errno.h>
#include<stdlib.h>
#include<stdio.h>
main(int argc,char *argv[])
{
int sockfd,nbytes,nbytes1,addrlen;
char buff[512];
struct sockaddr_in myaddr,servaddr;
if(argc!=3)
{
perror("usage client,serverport,serveraddress");
exit(1);
}

//socket

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
{
perror("Socket failed");
exit(1);
}

//fill the client address

myaddr.sin_family=AF_INET;
myaddr.sin_port=htons(0);
//you can assign ur own port no if zero is specified
myaddr.sin_addr.s_addr=htonl(0l);

//bind

if((bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr)))<0)
{
perror("bind failed");
exit(1);
}

//read data from keyboard

if((nbytes=read(0,buff,512))<0)
{
perror("read error");
exit(1);
}

//fill the server address


servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(atoi(argv[2]));
servaddr.sin_addr.s_addr=htonl(inet_addr(argv[1]));

//send to
18
if((sendto(sockfd,buff,nbytes,0,(struct sockaddr*)&servaddr,sizeof(servaddr)))!=
nbytes)
{
perror("send to failed");
exit(1);
}

// recv from

addrlen=sizeof(servaddr);

if((nbytes1=recvfrom(sockfd,buff,512,0,(struct sockaddr*)&servaddr,&addrlen))!=nbytes)
{
perror("recvfrom error");
exit(1);
}

// write to monitor on display


if((write(1,buff,nbytes1))!=nbytes)
{
perror("write error");
exit(1);
}
}

/* A simple Program to demonstrate usage of SELECT */

#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

int main(void)
{
fd_set rfds;
struct timeval tv;
int retval;

/* Watch stdin (fd 0) to see when it has input. */


FD_ZERO(&rfds);
FD_SET(0, &rfds);

/* Wait up to five seconds. */


tv.tv_sec = 5;
tv.tv_usec = 0;

retval = select(1, &rfds, NULL, NULL, &tv);


/* Dont rely on the value of tv now! */
19
if (retval == -1)
perror("select()");
else if (retval)
printf("Data is available now.\n");
/* FD_ISSET(0, &rfds) will be true. */
else
printf("No data within five seconds.\n");
exit(EXIT_SUCCESS);
}

/*Client – Server programs for reverse string using UDP*/

//UDP SERVER(ECHO DATA GRAM PROGRAM reverse )


#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<errno.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main(int argc,char *argv[])
{
int sockfd,addrlen,nbytes,i,len;
char buff[512],temp;
struct sockaddr_in myaddr,clntaddr;
if(argc!=2)
{
perror("usage server port");
exit(1);
}

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
{
perror("Socket failed");
exit(1);
}

// fill the server address

myaddr.sin_family=AF_INET;
myaddr.sin_port=htons(atoi(argv[1]));
myaddr.sin_addr.s_addr=htonl(0l);

//bind

if((bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr)))<0)
{
perror("bind failed");
exit(1);
}
20

//dummy value assignment

addrlen=sizeof(clntaddr);

//recvfrom

if((nbytes=recvfrom(sockfd,buff,512,0,(struct sockaddr*)&clntaddr,&addrlen))<0)
{
perror("recvfrom error");
exit(1);
}
len=strlen(buff)-1;
for(i=0;i<strlen(buff)/2;i++)
{
temp=buff[i];
buff[i]=buff[len];
buff[len--]=temp;
}

//send to

if((sendto(sockfd,buff,nbytes,0,(struct sockaddr*)&clntaddr,addrlen))!=nbytes)
{
perror("send to error");
exit(1);
}
}

//UDP CLIENT ECHO UDP CLIENT (for reversing a string)

#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<errno.h>
#include<stdlib.h>
#include<stdio.h>
main(int argc,char *argv[])
{
int sockfd,nbytes,nbytes1,addrlen;
char buff[512];
struct sockaddr_in myaddr,servaddr;
if(argc!=3)
{
perror("usage client,serverport,serveraddress");
exit(1);
}

//socket

if((sockfd=socket(AF_INET,SOCK_DGRAM,0))<0)
21
{
perror("Socket failed");
exit(1);
}

//fill the client address

myaddr.sin_family=AF_INET;
myaddr.sin_port=htons(0);
myaddr.sin_addr.s_addr=htonl(0l);

//bind

if((bind(sockfd,(struct sockaddr*)&myaddr,sizeof(myaddr)))<0)
{
perror("bind failed");
exit(1);
}

//read data from keyboard

if((nbytes=read(0,buff,512))<0)
{
perror("read error");
exit(1);
}

//fill the server address


servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(atoi(argv[1]));
servaddr.sin_addr.s_addr=htonl(inet_addr(argv[2]));

//send to

if((sendto(sockfd,buff,nbytes,0,(struct sockaddr*)&servaddr,sizeof(servaddr)))!=nbytes)
{
perror("send to failed");
exit(1);
}

// recv from

addrlen=sizeof(servaddr);

if((nbytes1=recvfrom(sockfd,buff,512,0,(struct sockaddr*)&servaddr,&addrlen))!=nbytes)
{
perror("recvfrom error");
exit(1);
}

You might also like