socket(AF_INET,SOCK_DGRAM,IPPROTO_IP);

解决方案 »

  1.   

    IPPROTO_IP
    请问做什么用? 
      

  2.   

    SORRY, 一点错误
    socket(AF_INET,SOCK_STREAM,IPPROTO_IP);//TCP
    socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
      

  3.   

    你没有调用wsastartup初始化socket库,所以不行。IPPROTO_IP=0。
      

  4.   

    不好意思,上面说错了,应该是IPPROTO_IP==0.
    byebye,明天见.
      

  5.   

    既然
    IPPROTO_IP==0
    那调用结果不就仍然返回-1?
      

  6.   

    TCP/IP 协议? 
    肯定装了, 我都连网了。
      

  7.   

    不是给你说了嘛,在调用socket函数之前,必须首先调用WSAStartup函数嘛,具体说明,去看MSDN。
      

  8.   

    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;
    }
      

  9.   

    上述语句在SOCKET 1应该没有问题 ,不过在SOCKET 2 中就有问题,因为AF_inet协议族需要指明参数3,试试吧!
      

  10.   

    devouer(玩笑一生):谁说的?我用的就是winsock2
      

  11.   

    返回-1的原因是指定了求知的协议或者要求了一种没有支持协议的套接字类型,一般地:
    在UNIX域中:s = socket(AF_UNIX,SOCK_DGRAM,UDP)创建数据报套接字的支持协议为UDP,
    在INTERNET域中:s = socket(AF_INET,SOCK_STREAM,TCP)创建流套接字的支持协议为TCP,不能混淆。