SOCKET sock;
sock=socket(AF_INET,SOCK_STREAM,0);
为什么sock总是INVALID_SOCKET呢?

解决方案 »

  1.   

    和这个没什么关系
    我现在就没有用到API和MFC
      

  2.   


    你可以加一句
    if ((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET)
    {
    printf("Socket failed.Error:%d\n",WSAGetLastError());
    return FALSE;
    }
    就知道拉  我刚看了下资料 不知道行不行
      

  3.   

    前面的一部分是这样的
    void main()
    {
    int length;
    SOCKET sock,msgsock;
    struct sockaddr_in server;
    struct sockaddr tcpaddr;
    char buf[1024];
    int rval, len; sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock==INVALID_SOCKET)
    {
                perror("opening stream socket");
                exit(1);
    }
    但是怎么也过不去这个地方,为什么?
      

  4.   

    有一个初始化的函数,你用了没有,
    if (WSAStartup(WINSOCK_VERSION,&wsadata)!=0)

    WSACleanup();
    }
    你写了没有
      

  5.   

    你贴的代码太少拉,好像前面要调用WSAStartup来初始化windows  socketDLL
      

  6.   

    要首先调用初始化函数 WORD wVersionRequested=MAKEWORD(2,0);
    WSADATA wsaData;
    int err=WSAStartup(wVersionRequested,&wsaData);
    if ( err != 0 ) {
    printf("不能打开WSock32.dll);
    return 0;
    }
    然后才能创建socket
    在程序结束前调用关闭函数
    WSACleanup();
      

  7.   

    请问在用bind(),accept()时,前面也要加什么吗?
      

  8.   

    必须加初始化函数 UP
    bind....就不用了