socket()总返回-1 socket(AF_INET,SOCK_DGRAM,IPPROTO_IP); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 IPPROTO_IP请问做什么用? SORRY, 一点错误socket(AF_INET,SOCK_STREAM,IPPROTO_IP);//TCPsocket(AF_INET,SOCK_DGRAM,IPPROTO_UDP); 你没有调用wsastartup初始化socket库,所以不行。IPPROTO_IP=0。 不好意思,上面说错了,应该是IPPROTO_IP==0.byebye,明天见. 既然IPPROTO_IP==0那调用结果不就仍然返回-1? TCP/IP 协议? 肯定装了, 我都连网了。 不是给你说了嘛,在调用socket函数之前,必须首先调用WSAStartup函数嘛,具体说明,去看MSDN。 this:;;;;;;;;; if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR) { AfxMessageBox("WSAStartup failed with error %d\n",WSAGetLastError()); WSACleanup(); return -1; }口sockfd // Copy the resolved information into the sockaddr_in structure memset(&addr,0,sizeof(addr)); memcpy(&(addr.sin_addr),hp->h_addr,hp->h_length); addr.sin_family = hp->h_addrtype; addr.sin_port = htons(PORT); sockfd = socket(AF_INET,SOCK_DGRAM,0); /* Open a socket */ if (sockfd < 0 ) { AfxMessageBox("Client: Error Opening socket: Error %d\n", WSAGetLastError()); WSACleanup(); return -1; } 上述语句在SOCKET 1应该没有问题 ,不过在SOCKET 2 中就有问题,因为AF_inet协议族需要指明参数3,试试吧! devouer(玩笑一生):谁说的?我用的就是winsock2 返回-1的原因是指定了求知的协议或者要求了一种没有支持协议的套接字类型,一般地:在UNIX域中:s = socket(AF_UNIX,SOCK_DGRAM,UDP)创建数据报套接字的支持协议为UDP,在INTERNET域中:s = socket(AF_INET,SOCK_STREAM,TCP)创建流套接字的支持协议为TCP,不能混淆。 控件内容写入数据库问题 初学网络编程选择哪本?《windows网络编程技术》 or 《windows网络编程第二版》?? 用MFC实现UDP广播,并接收广播数据 如何用VC做一个OLE Document Server? 朋友们一般都用哪个的安装生成工具? 关于代码编辑器的巨难问题 给很多分! socket的udp问题,请问怎么保持数据同步,请多多指点. 请问如何使用非模态对话框? 《深入》1到10章49个问题。拿起你的书来看看吧,一定会有帮助的!答问题一定给分奥PPPP 数据变化太快,文本框更新卡 初学者的问题:如何分割窗口? CTabCtrl用法?求助呃!!!!!!!!
请问做什么用?
socket(AF_INET,SOCK_STREAM,IPPROTO_IP);//TCP
socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
byebye,明天见.
IPPROTO_IP==0
那调用结果不就仍然返回-1?
肯定装了, 我都连网了。
if (WSAStartup(0x202,&wsaData) == SOCKET_ERROR) {
AfxMessageBox("WSAStartup failed with error %d\n",WSAGetLastError());
WSACleanup();
return -1;
}口sockfd
// Copy the resolved information into the sockaddr_in structure
memset(&addr,0,sizeof(addr));
memcpy(&(addr.sin_addr),hp->h_addr,hp->h_length);
addr.sin_family = hp->h_addrtype;
addr.sin_port = htons(PORT); sockfd = socket(AF_INET,SOCK_DGRAM,0); /* Open a socket */ if (sockfd < 0 ) {
AfxMessageBox("Client: Error Opening socket: Error %d\n",
WSAGetLastError());
WSACleanup();
return -1;
}
在UNIX域中:s = socket(AF_UNIX,SOCK_DGRAM,UDP)创建数据报套接字的支持协议为UDP,
在INTERNET域中:s = socket(AF_INET,SOCK_STREAM,TCP)创建流套接字的支持协议为TCP,不能混淆。