套接字 10049?WSAEADDRNOTAVAI

MFC 綁定地址 計算機(jī)內(nèi)的多種IP地址帶來的麻煩

轉(zhuǎn)載請聲明https://blog.csdn.net/m0_37147712/article/details/79906127
作者郵箱XiaXiangX@foxmail.com


在筆記本中有虛擬地址,藍(lán)牙地址,代理地址,以太網(wǎng)地址等。


這里寫圖片描述

在MFC獲取IP地址用來綁定套接字時可能會出現(xiàn)10049錯誤,使用WSAGetLastError()會顯示WSAEADDRNOTAVAI。這項錯誤的意思是遠(yuǎn)程連接失敗,原因是用戶獲取的IP地址不一定是以太網(wǎng)地址。
  看上面的圖片可知,此電腦的ipv4地址在第5個,如果我填第一個IP地址,會出現(xiàn)如下現(xiàn)象。代碼,和截圖如下所示

char szHostName[MAX_PATH+1]  ;
    gethostname(szHostName, MAX_PATH);  //獲取主機(jī)名
    hostent* phostent = gethostbyname(szHostName);  //獲取主機(jī)內(nèi)容
    if (phostent == NULL)
    {
        AfxMessageBox(_T("得到本機(jī)地址失?。?));
    }
char* szIP = inet_ntoa(*(in_addr*)&phostent->h_addr_list[0]);   //獲取主機(jī)IP
綁定套接字失敗

  如若我使用第五個地址,將h_addr_list[0]處的0改為5,則綁定套接字成功,如下圖。

  
綁定成功

想必看到這里你們會想了解判斷該IP為以太網(wǎng)地址方法,我再這里給出一個比較麻煩的方法,如果有好的方案可以在下面留言代碼如下所示

void CServerChatDlg::GetiIpAddr(int i,CString &m_szServerIP)
{
    //獲取IP地址
    char szHostName[MAX_PATH + 1];
    gethostname(szHostName, MAX_PATH);  //獲取主機(jī)名
    hostent* phostent = gethostbyname(szHostName);  //獲取主機(jī)內(nèi)容
    if (phostent == NULL)
    {
        AfxMessageBox(_T("得到本機(jī)地址失敗!"));
    }
    //for (int i = 0;i<10; i++)
    //{
    char* szIP = inet_ntoa(*(in_addr*)&phostent->h_addr_list[i]);   //獲取主機(jī)IP
                                                                    //}
    m_szServerIP = szIP;    //在編輯框中顯示IP
}

部分代碼

for ( i = 0; i < 10; i++)
    {
        if (bind(m_LocalSocket, (sockaddr*)&sockAddr, sizeof(sockAddr)) == 0)
        {
            m_BindAddr.EnableWindow(FALSE);
            UpdateData(FALSE);
            MessageBox("地址和端口綁定成功!", "提示");
            break;
        }
        else
        {
            GetiIpAddr(i++,m_szServerIP);
            sockAddr.sin_addr.S_un.S_addr = inet_addr(m_szServerIP.GetBuffer(0));
        }
    }

在這里我將查找IP地址專門拿出來做了一個函數(shù),在判斷綁定成功時將每一個IP都試一下。這樣就大功告成了,我沒有將所有代碼寫全,如有問題,私聊或者評論都行。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 即使百般不想再提及你,還是寫下來這段文字。我本身廢話較多中心不穩(wěn),寫哪里算哪里了。 最近聽到了中島美嘉的,曾經(jīng)我也...
    _林棲_閱讀 227評論 0 0
  • 2018年4月11日 姓名:潘紅軍 公司 :揚(yáng)州市方圓建筑工程有限公司 【日精進(jìn)打卡第079天】 南京第349...
    5119a64ee3ab閱讀 176評論 0 0
  • 各位T10班的天使們,大家晚上好!我是劉芳,坐標(biāo)海南??冢蚁冉榻B一下自己,我是一名努力將教與學(xué)變成一種幸...
    陶醉了醉了閱讀 271評論 0 1
  • 總有一些人他住在你的心里,卻消失在你的生活中。 那天有高中同學(xué)加我微信,我很猶豫,因為我是一個極其慢熱的人,對于除...
    吾愛家閱讀 456評論 16 5
  • 《富爸爸窮爸爸》 1窮人和富人最本質(zhì)的區(qū)別是思維方式的不同。 2.改變自己,增強(qiáng)駕馭自己的能力。 控制對錢的欲望,...
    博妮_6de3閱讀 135評論 0 0

友情鏈接更多精彩內(nèi)容