c++ - Windows Socket unable to bind on VPN IP address -


i trying bind particular ip on vpn network , able ping it, connect , able telnet on particular port windows mfc program gives error code 10049 , not able go further in debugging problem appreciated, running on visual studio 2012 win 7 , remote client running on linux variant.

this part of code getting error ip address configurable hardcoding debug.

   cstardoc          *p_doc = (cstardoc*) lpparam;     bool              fflag = true;    const int         max_msglen = max(sizeof(disp_info_t ), sizeof(reason_string_t ));    char              buffer[max_msglen];    disp_info_t       *p_disp_info_buffer = (disp_info_t *) buffer;    disp_info_t       disp_info_combined; //receiving combined butter    disp_info_t_1     *p_disp_info_buffer1; //receiving buffer pointer dispinfo1    disp_info_t_2     *p_disp_info_buffer2; //receiving buffer pointer dispinfo2    int               msgreceived = 0; // initially, 0.     // same msgnumber, when program receives first portion of buffer, set 1,    // when program receives both portions, set 0.     // when program misses portion same msgnumber, set 0 also.    int               currentmsgnum1 = 0;      int               currentmsgnum2 = 0;      int               err;    cstring           msg;    sockaddr_in       saudpportin;    sockaddr_in       from;     struct addrinfo *result = null;    struct addrinfo *ptr = null;    struct addrinfo hints;    ::memset( &hints,0, sizeof(hints) );    hints.ai_family = af_unspec;    //hints.ai_socktype = sock_dgram;    //hints.ai_protocol = ipproto_udp;    char asideip[] = "192.168.1.129";    bool              othersideisstandby = false;     static bool       dofirstmsg = true;      //   p_disp_info_combined = & disp_info_combined;    p_doc->threadrunning = true;    p_doc->udpsocket = socket(af_inet, sock_dgram, 0);    if (invalid_socket == p_doc->udpsocket)    {        cstring msg =  "invalid socket: "+ wsagetlasterror();        afxmessagebox(msg);        return(-1);    }     long ip = 0;    int sockbufsize = 0;     int timeout = 2000;      // ip matches ip of qnx machines in last octet.     // note: in host byte format.     int errcode = getaddrinfo(asideip,null,&hints,&result);    for(ptr = result;ptr != null ;ptr=ptr->ai_next)     {        switch (ptr->ai_family)         {          default: break;          case af_inet :            ip = p_doc->myip;            saudpportin.sin_family = af_inet;            saudpportin.sin_addr.s_addr = (((sockaddr_in*) ptr->ai_addr)->sin_addr).s_addr;            saudpportin.sin_port = htons(p_doc->port_addr );            int length = sizeof(buffer) *2;            //err = setsockopt(p_doc->udpsocket,sol_socket, so_reuseaddr, (char *)&fflag, sizeof(fflag));            //err = setsockopt(p_doc->udpsocket,sol_socket, so_broadcast, (char *)&fflag, sizeof(fflag));            err = setsockopt(p_doc->udpsocket, sol_socket, so_rcvbuf, (char *)&length, sizeof(length));             // keep hanging forever.             err = setsockopt(p_doc->udpsocket, sol_socket, so_rcvtimeo, (char *)&timeout, sizeof(timeout));            err = bind(p_doc->udpsocket, (sockaddr far *)&saudpportin, sizeof(sockaddr_in));            if (err == socket_error)            {              int errcode = wsagetlasterror();              closesocket(p_doc->udpsocket);               /*    msg.format("network connectivity failed, please check network. ");               afxmessagebox(msg);                 closesocket(p_doc->udpsocket);           p_doc->udpsocket = -1;                                          // task trying attach port.                 return(1);*/            }        }    } 

thanks

you can not bind remote address , error shows, such case. use bind system call local ip , port.

here msdn says error:

wsaeaddrnotavail 10049

cannot assign requested address. requested address not valid in context. results attempt bind address not valid local computer. can result connect, sendto, wsaconnect, wsajoinleaf, or wsasendto when remote address or port not valid remote computer (for example, address or port 0).


Comments

Popular posts from this blog

android - Get AccessToken using signpost OAuth without opening a browser (Two legged Oauth) -

org.mockito.exceptions.misusing.InvalidUseOfMatchersException: mockito -

google shop client API returns 400 bad request error while adding an item -