2009-11-12 53 views
5

調查winsock中的異步地址解析,似乎只有兩個選項要麼在單獨的線程上使用阻塞gethostbyname,要麼使用WSAAsyncGetHostByName。後者是爲了某種原因而設計的,可以處理窗口消息,而不是重疊操作和完成端口/例程。winsock中的異步地址解析?

是否有任何版本的gethostbyname以類似方式與其他winsock API異步運行並重疊操作?

+1

「某些原因」它的設計方式是Winsock是在Win16世界中創建的,沒有線程或控制檯模式程序(有DOS程序,但除了欺騙之外,他們沒有訪問Winsock的權限)。所有的Windows程序都有一個GUI ,或者至少是一個消息循環,OS通過該循環告訴程序發生的事情。通知完成的名稱查找t通過這個機制是有道理的,在那個世界上。 – 2009-11-13 21:54:13

回答

1

對不起,沒有gethostbyname()的重疊版本。

3

不幸的是,目前還沒有,儘管GetAddrInfoEx()通過所有'通常'路徑(包括IOCP)爲異步操作提供了所有正確的佔位符,所以我預計最終會有......不幸的是,在此時間,文檔說,所有這些必須設置爲NULL,並標記爲'保留'。 :(

我正要寫一個(已經有一段時間了)......不幸的是,WSAAsyncGetHostByName甚至不允許併發名稱解析,所以它作爲我想要的基礎是沒用的;但是,然後再次,因爲它不處理IPv6,這也使它對我來說毫無用處,我希望我會從頭開始;可能使用類似this(啤酒)作爲基礎的東西

+0

請注意,您鏈接到的第二個庫是GPL。 – 2009-11-13 21:56:41

+0

好地方沃倫。我還沒有跟進它。我昨晚只做了谷歌搜索。 – 2009-11-13 22:50:22