Caim-Astraea 2018-11-14 11:27 采纳率: 0%
浏览 1564

bind后10047错误,如何解决?

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

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-11-14 11:54
    关注

    Socket error 10047 – Address family not supported by protocol family//使用的地址族不在支持之列
    如果你试了很多方法都不行,就怀疑是防火墙干扰或者网络问题,在你本地先测试,用127.0.0.1,关掉防火墙。

    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划