2011-03-18 82 views
1

回來了!更多投票()?的

我一直在做一些異步套接字編程與選擇()在Windows上,它一直工作得很好。然而它只能擴展到1024個clients.Poll()是解決這個限制的方法,我知道它可以在linux和unix上運行。但它不適用於Windows系統是否正確?

我讀過WsaPoll(),它有完全相同的功能嗎?我必須鏈接哪些庫才能使用它?

可以使用FD_SETSIZE在Windows中安全地增加套接字號嗎?我的最終程序將在Linux服務器上。不過,我現在正在Windows系統上進行測試。我應該將我的測試機器交換到Linux機器嗎? (可能要反正)

否則你會推薦使用Windows?

(對不起,所有的問題,我對我自己做研究,我答應= d)

+1

請勿使用ASIO。可讀代碼更好。 – 2011-03-19 02:14:33

回答

3

WSAPoll()行爲就像poll()。你將需要使用WSAGetLastError找出哪裏出了問題。錯誤代碼不匹配,根據WindowsSDK和系統版本的不同,posix代碼可能會或可能不會在winsock2頭文件中定義。

要使用WSAPoll,您必須包含winsock2.h和鏈接到ws2_32.lib並在Windows Vista/Server 2008及更高版本上運行應用程序。

但是,在您的代碼中有WSAPoll並不總是阻止它在Windows XP上編譯,而是在啓動應用程序時發生錯誤。

如果您不打算在Windows上運行您的應用程序,那麼我建議您跳過SDK,build,dll和Windows版本的問題,並設置一個Linux vm來開發。

+1

好的,這就是我的想法,謝謝你的確認。我將只安裝一個Linux發行版,我需要一段時間。 – ultifinitus 2011-03-19 00:50:25

1

在Windows上,WSAAsyncSelect應該允許您在單個線程中處理來自數千個套接字的事件。

+0

謝謝!我不確定它的可擴展性如何! – ultifinitus 2011-03-19 00:50:45

2

libevent將使用Windows,Linux,Solaris,OS X和所有BSD衍生產品上事件驅動編程的最佳可用機制。