日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

socket 10106问题解决日记

發布時間:2023/12/18 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 socket 10106问题解决日记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
很久沒寫博客了,這兩天解決了一個創建套接字(SOCKET)失敗,錯誤碼為10106的問題。從事網絡編程的朋友可能也遇到過類似問題,大多數都可以通過重裝系統解決。這次我想分析一下10106產生的根本原因,給大家提供另外一種思路,解決類似問題。
【環境】 WIN7,64位系統
【現象】 CAD2006平臺程序不能聯網,其他程序沒有問題
【錯誤原因】 創建SOCKET失敗,錯誤碼10106
【嘗試方法】 1. 在A.dll(非CAD程序啟動時加載)的入口函數中測試網絡連接,成功! 2. 在B.dll(CAD程序啟動時加載)的入口函數中測試網絡連接,失敗! 3. 在B.dll的入口函數中手動加載ws2_32.dll成功,mswsock.dll失敗,錯誤碼127! 4. 卸載用戶電腦上的卡巴斯基,不行! 5. 卸載cad重新安裝,然后使用Registry Mechanic修復注冊表,問題解決!
【原因分析】 使用MemDll加載mswsock.dll發現是修正IAT時失敗了,具體原因是修正WahDestroyHandleContextTable函數地址時失敗, ws2_32.dll模塊中找不到這個函數。我們知道,ws2_32.dll的5.1版本確實沒有導出此函數,此函數在ws2help.dll中導出; 但是在6.1版本中(win7),ws2_32.dll導出了該函數。 進一步調試,在B.dll的入口函數中加載ws2_32.dll成功后,根據模塊句柄獲取模塊路徑,發現CAD2006平臺程序中加載的ws2_32.dll模塊路徑在cad2006目錄下,而其他程序則是在system32目錄下。 令人不解的是,在cad2006目錄下根本找不到ws2_32.dll文件,在整個系統中全局搜索,也只找到3個ws2_32.dll文件,都在系統目錄下,并且都是6.1版本。手工拷貝一個6.1版本的ws2_32.dll文件到cad2006目錄,問題依舊。于是懷疑是CAD平臺程序的運行時環境出了問題(本質上是cad的運行時環境有問題),比如ws2_32.dll是不是真的加載成功了?獲取到的ws2_32.dll的模塊句柄是不是錯亂了?是不是根據句柄獲取模塊所在目錄的API錯亂了等等。 嘗試從已加載的ws2_32.dll模塊中獲取accept等5.1版本中的接口,都可以成功,這說明ws2_32.dll確實已經加載,并且有效,只是版本不對,是5.1,而非6.1。 最后將cad卸載掉重新安裝,問題解決!

總結

以上是生活随笔為你收集整理的socket 10106问题解决日记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。