int main(int argc, char** argv) {
WSADATA wsaData;
WSAStartup(MAKEWORD(2,1),&wsaData);
if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=1)
{
printf("WSAStartup - error\n");
WSACleanup();
return 0;
}
SOCKET s;
SOCKADDR_IN addr;
s=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if(s==SOCKET_ERROR)
{
printf("socket - error\n");
WSACleanup();
return 0;
}
addr.sin_family = AF_INET;
addr.sin_port = ::htons(6000);
char str[56];
memset(str,0,sizeof(str)+1);
gethostname(str,sizeof(str));
hostent *pHost;
pHost = gethostbyname(str);
int nErr=GetLastError();
char *szAddr[10];
//memcpy(szAddr,pHost->h_addr_list,pHost->h_length);
//szAddr = inet_ntoa (*(struct in_addr *)pHost->h_addr_list);
//addr.sin_addr.S_un.S_addr=inet_addr(szAddr);
int i=0;
while(pHost->h_addr_list[i]!=NULL)
{
szAddr[i]=(char *)malloc(16);
sprintf(szAddr[i],"%s",inet_ntoa(*(struct in_addr *)pHost->h_addr_list[i]));
printf("Bind to %s\n",szAddr[i]);
i++;
};
//addr.sin_addr.S_un.S_addr=inet_addr("192.157.1.201");
//memcpy(&addr.sin_addr.S_un.S_addr,pHost->h_addr_list,pHost->h_length);
addr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
//BOOL flag;
//setsockopt(s,IPPROTO_IP,2,(char*)&flag,sizeof(flag));
if(0!=bind(s,(SOCKADDR*)(&addr),sizeof(addr)))
{
nErr=WSAGetLastError();
WSACleanup();
printf("bind - error\n");
return 0;
}
WSACleanup();
return 0;
网上的方法试了很多次,err都为10047