This server code runs well at its first run
but when I run it again it give me error in bind()
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<netdb.h>
#define SERVER_ERROR(msg,exit_code) \
do { fprintf(stderr,msg);exit(exit_code);}while(0)
#define BUF_SIZE 500
// This code will represent a simple server that can response to any
http request and load simple module called "MYMOD"
// This will take two args $ $PROGRAM_NAME SOCKET_NUMBER
int main( int argc, char* argv[])
{
int sfd;
char msg[100];
struct addrinfo hints,*res;
if ( argc != 2){
sprintf(msg,"USAGE: $%s PortNumber \n",argv[0]);
SERVER_ERROR(msg,100);
}
// Create addr info data to use in socket() Creation
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = 0;
if ( getaddrinfo("localhost", "1111" ,&hints ,&res) )
SERVER_ERROR("getaddrinfo",99);
if ( (sfd = socket(res->ai_family, res->ai_socktype, res->ai_protocol))
== -1 )
SERVER_ERROR("socket()",101);
if ( bind(sfd, res->ai_addr, res->ai_addrlen) )
SERVER_ERROR("bind()",102);
freeaddrinfo(res);
if ( listen(sfd ,5) )
SERVER_ERROR("listen()",103);
struct sockaddr_in cs;
socklen_t slen;
puts("WE ARE LISTENING NOW .....");
if (accept(sfd ,&cs ,&slen) == -1)
SERVER_ERROR("accept()",104);
puts("Client trying to connect now ...");
close(sfd);
return 0;
}