调用一次recvfrom()后,它怎么会影响到里面的SOCKET变量?

解决方案 »

  1.   

    就是在一个循环中,调用这个函数,当接受一次数据后,发现里面的SOCKET变量被改变了,再执行这个函数,出错。
      

  2.   

    初始化代码如下:
             WSADATA wsd;
    SOCKET  sLocal, sRemote,sTmp;
    struct  sockaddr_in   local;
    char buff[16];

    if(WSAStartup(MAKEWORD(2, 2), &wsd) != 0){
        AfxMessageBox("WSAStartup() failed!");
        return 0;
    }

    sLocal = socket(AF_INET, SOCK_DGRAM, 0); if(sLocal == SOCKET_ERROR){
    AfxMessageBox("socket() failed!");
    closesocket(sLocal);
    WSACleanup();
    }

    local.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    local.sin_family=AF_INET;
    local.sin_port=htons(2222);

    int ret=bind(sLocal,(struct sockaddr *)&local,sizeof(local));

    if(ret==SOCKET_ERROR){
          AfxMessageBox("bind() failed!");
       closesocket(sLocal);
       WSACleanup();
       return 0;
    };
      

  3.   

    是用了线程了,不过只是接收数据,没有更改初始设置,可是当接收完数据后,那个sLocal被更改了。谢谢各位老大。