hi. I'm just trying to write a Simple Client and Server code. But I got an Error in Server Program. Since I'm new in Socket Programming So I can't get this Error.
Someone please Help and Please Explain About this Error.
Code:
#include<windows.h>
#include<winsock2.h>
#include<winsock.h>
#include<stdio.h>
#define PROTOPORT 5193
#define QLEN 6
int visits=0;
main(argc, argv)
int argc;
char *argv[];
{
struct hostent *ptrh;
struct protoent *ptrp;
struct sockaddr_in sad;
struct sockaddr_in cad;
int sd,sd2,port,alen;
char buf[1000];
#ifdef WIN32
WSADATA wsaData;
WSAStartup(0*0101,&wsaData); //20
#endif
memset((char *)&sad,0,sizeof(sad));
sad.sin_family=AF_INET;
sad.sin_addr.s_addr=INADDR_ANY;
if(argc>1)
port=atoi(argv[1]);
else
port=PROTOPORT;
if(port>0)
sad.sin_port=htons((u_short)port);
else
{fprintf(stderr,"bad port number %s\n",argv[1]);
exit(1);
}
if(((int)(ptrp=getprotobyname("tcp")))==0)
{fprintf(stderr,"cannot map \"tcp\" to protocol number"); //I get Error here.
exit(1);
}
sd=socket(PF_INET,SOCK_STREAM,ptrp->p_proto);
if(sd<0) //40
{fprintf(stderr,"socket creation failed\n");
exit(1);
}
if(bind(sd,(struct sockaddr *)&sad, sizeof(sad))<0)
{fprintf(stderr,"bind failed\n");
exit(1);
}
if(listen(sd,QLEN)<0)
{fprintf(stderr,"listen failed\n");
exit(1);
}
while(1)
{alen=sizeof(cad);
if((sd2=accept(sd,(struct sockaddr *)&cad,&alen))<0)
{fprintf(stderr,"accept failed\n");
exit(1);
}
visits++;
sprintf(buf,"This server has been contacted %d times%s\n",visits,visits==1?".":"s.");
send(sd2,buf,strlen(buf),0);
closesocket(sd2);
}}
Every time I get the Error "cannot map tcp to protocol number". Someone Please Explain this Error and Help me To get out of it.