系統學習Windows客戶端開發
A使用UDP socket,調用sendto()函數向B發送數據,但是B沒有接收數據發送端口不可達的ICMP報文,之后A調用recvfrom()試圖接收目標地址B的數據,recvfrom會返回-1,WSAGetLastError()返回WSAECONNRESET (10054) 連接被對方重置。
奇怪,UDP是無連接,怎么會被對方重置連接呢?
微軟官網這么說:If sending a datagram using the sendto function results in an "ICMP port unreachable" response and the select function is set for readfds, the program returns 1 and the subsequent call to the recvfrom function does not work with a WSAECONNRESET (10054) error response. In Microsoft Windows NT 4.0, this situation causes the select function to block or time out.
也就是說,Windows UDP socket將ICMP端口不可達報文的錯誤,轉成WSAECONNRESET 錯誤碼,在recvfrom()時返回。經測試,每次recvfrom()都會這樣,所以重試沒用只能重新創建socket。
這個問題解決方法是設置socket的工作模式,讓底層socket忽略這個錯誤無需上報。
BOOL bEnalbeConnRestError = FALSE;DWORD dwBytesReturned = 0;WSAIoctl(iSock, SIO_UDP_CONNRESET, &bEnalbeConnRestError, sizeof(bEnalbeConnRestError), NULL, 0, &dwBytesReturned, NULL, NULL);
使用UDP時,切記要加上這段代碼,要不然在某些異常場景就會出現UDP socket無法正常工作。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
阿里巴巴有銀行嗎?沒錯,阿里巴巴作為大股東,是五大民營銀行之一。阿里巴巴網絡科技有限公司(簡稱阿里巴巴集團)由前英語教師馬云為首的18人于1999年在杭州創立。他們認為,互聯網可以創造一個公平的競爭環境,讓小企業通過創新和技術擴大業務,在國內或全球市場競爭時處于更有利的地位。阿里巴巴集團運營多項業務,此外,還從關聯公司的業務和服務中獲得運營商業生態系統的支持。相關公司的業務包括:淘寶、天貓、聚劃算...
echo off是什么語言?Echo off不是語言,是Dos命令行,意思是關閉Echo。bat批處理腳本中經常使用Echo。該命令的功能是顯示信息或回應命令開或關。簡單地說,有兩種用途,:。第一種用法是直接輸出字符串,比如在DOS終端輸入echo 123456,執行回車后,終端屏幕上會顯示字符串123456。該函數通常用于提示用戶或調試腳本。第二種用法是關閉后續命令的回顯。比如在DOS終端輸入命...
北華大學北校區怎么樣?北校區是北華三個校區中最老的,但北校區的宿舍條件是三個校區中最好的。今年9月,學校只剩下少量的六人宿舍,大部分都是四人宿舍。學校周邊屬于吉林偏遠地區,環境比較混亂,但是北校區還是可以滿足你正常的學習和生活的??傊?,北華完全有資格為你的成功。北華大學北校區多少人?北校區有16300多名學生。北華大學,簡稱北華,位于吉林省吉林市。是吉林省規模最大的綜合性重點大學,“卓越博士教育培...