/* A simple server in the internet domain using TCP
The port number is passed as an argument */
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include<string.h>
int main(int argc, char *argv[])
{
struct addrinfo hints,*serv,*p;
int sockfd,newfd,status;
struct sockaddr_storage their_addr;
socklen_t addr_size;
char *msg;
int len;
int yes=1;
if(argc<2)
{
printf("Usage = portno\n");
return(1);
}
memset(&hints,0,sizeof(hints));
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_STREAM;
hints.ai_flags=AI_PASSIVE;
if((status = getaddrinfo(NULL,argv[1],&hints,&serv)) != 0)
{
fprintf(stderr,"Error : %s\n",gai_strerror(status));
return(1);
}
for(p=serv;p!=NULL;p=p->ai_next)
{
if( (sockfd = socket(p->ai_family,p->ai_socktype,p->ai_protocol)) == -1)
{
printf("Err sock!!\n");
continue;
}
if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes,
sizeof(int)) == -1)
{
perror("setsockopt");
return(1);
}
if((bind(sockfd,p->ai_addr,p->ai_addrlen)) == -1);
{
printf("Bind err\n\n");
close(sockfd);
continue;
}
break;
}
if((listen(sockfd,10)) == -1);
printf("Listen err!\n");
addr_size=sizeof(their_addr);
newfd = accept(sockfd,(struct sockaddr *)&their_addr,&addr_size);
msg = "Aneesh was here";
len = strlen(msg);
if( send(sockfd,msg,len,0) != len)
{
printf("Message partally reatched or not reached sucessfully\n");
}
freeaddrinfo(serv);
return(0);
}
This program does not binds why .....:'(
Thank you in advance......