I am learning network prgramming in linux in c,and try to build a server and in this server I want to bind the listening socket to a paricular Ip address and port.Bind function is showing error,I did not want to use wild card.
Here is the code......
#include<stdio.h>
#include<sys/socket.h>
#include<strings.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<string.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
int listenfd,connfd;
socklen_t len;
sockaddr_in servaddr,cliaddr;
char buff[100];
listenfd=socket(AF_INET,SOCK_STREAM,0);
if(listenfd==-1)
printf("error creating socket\n");
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(600);
// bind is showing error
servaddr.sin_addr.s_addr=htonl(inet_addr("127.0.0.1"));
if(bind(listenfd,(sockaddr *)&servaddr,sizeof(servaddr))==-1)
printf("error in binding\n");
char *c;
c=getenv("LISTENQ");
if(listen(listenfd,atoi(c))==-1)
printf("error in listening");
for(;
{
len=sizeof(cliaddr);
connfd=accept(listenfd,(sockaddr*)&cliaddr,&len);
if(connfd==-1)
printf("error in accepting\n");
printf("connection from client with IP address %s ,port:%d\n",inet_ntop(AF_INET,&cliaddr.sin_addr,buff,sizeof(buff)),ntohs(cliaddr.sin_port));
printf("you:");
scanf("%s",buff);
if(write(connfd,buff,strlen(buff))==-1)
printf("error in writing");
close(connfd);
}
}