2011-02-17 50 views
2

我爲一家使用客戶端/服務器應用程序的大公司工作。我們最近以可怕的結果推出了這個應用程序。使用以C++編寫的應用程序的64個連接限制幫助**

背景:有2個應用 1:接受端口9000。 ANS連接的服務器應用 2:編程以使在端口向地圖服務器的連接的客戶端應用9000

在運行時在我們的citrix環境中的客戶端應用程序,我們似乎始終將客戶端應用程序成功啓動64次,然後客戶端的任何進一步連接都會獲得應用程序顯示的連接錯誤對話。

當接近供應商他們聲明他們的應用程序沒有錯!我們嘗試在Windows 2003和2008盒子上運行服務器應用程序無濟於事。

我們甚至在基本的Win XP桌面環境中設置了相同結果的軟件。

如果其中一個建立的連接被終止,則下一個請求連接的客戶端被授予。

供應商狀態設置每個思傑箱提供給自己的客戶端連接服務器的軟件版本,但是這是對廣告的軟件功能。

我們試圖程序,如套裝軟件但該連接尚未建立的客戶端應用程序顯示「無法連接到服務器」消息,在點擊連接中斷的消息確定這些狀態。

總之沒有人知道的一種方式,以確定連接限制駐留在lamens條款。我可以通過某種方式顯示這一點,向供應商證明這是他們的軟件。

他們提到它是用C++編寫,我發現了一些線索在網上關於插座的連接用C++編寫使用WSAEventSelect程序的一些限制。

解決了這個問題5天!瘋了!

感謝所有的Stackoverflow會員/訪問者有一個地方提出這樣的查詢。

+0

我似乎記得一些操作系統限制計劃,一些固定的金額文件描述符(或連接描述符)的數量。我不能肯定地說這是否是如此,但它可能是值得調查的。 – templatetypedef 2011-02-17 10:18:55

回答

4

這個線程:how break the 64 limit when using WSAEventSelect似乎在爲你的問題的解決方案,以點。

但是,你顯然不具備修補自己的軟件的可能性,因此整個問題將說服你確切地知道解決的辦法是什麼問題就是什麼:)

給供應商證明該軟件正在使用WSAEventSelect,您可以使用偉大的Dependancy Walker工具在服務器的某個exe或dll文件中搜索此功能的使用導入,假設您的最終用戶許可證允許您執行諸如反向 - 工程師。

希望您可以通過指向上面的鏈接來說服供應商。

0

那麼,你做過任何老式的調試?不僅僅是觀看TCPView,我的意思是深入研究代碼並逐步完成,觀看返回和錯誤代碼。數字64聽起來很像WaitForMultipleObjects()MAXIMUM_WAIT_OBJECTS限制。

0

您需要設置代理。然後,您最多可以有64個代理,每個代理最多可以接受64個連接,並且您可以擁有4096個連接。

如果你需要更多的,然後代理到代理...

相關問題