2012-05-10 35 views
1

我正在製作一個unix ssl服務器/客戶端。到目前爲止,我已使用select實現了FD_SET以在一個主服務器進程中同時處理所有連接。但由於__FD_SETSIZE客戶端的數量只能是1024.我需要增加客戶端的數量和服務器的效率。改變__FD_SETSIZE有潛在的問題(顯然?),所以我卡住了。我該如何編寫我自己的製作網站服務器?

迄今爲止,所述網絡包括:errno.h中檢測,信號檢測 - >原子的處理,FD_SET - >選擇(),成功的流套接字基礎的通信。

我真的很感激,如果有人可以告訴我,我該怎麼辦? 1024之後是否會出現fork()(如果它甚至可以執行,則會出現它自己的問題?)我是否實現了處理每個客戶端請求或僅處理客戶端數據或兩者的線程?

您認爲最好的網絡架構是什麼?請記住它是一個基於套接字流的連接,旨在儘可能多地處理懲罰,並允許儘可能多的客戶端到服務器。

+0

這功課嗎?你已經擁有兩個基本的機制(進程和線程)。沒有「最好」的答案。 – msw

+0

沒有不作業,我試圖爲我自己創建一個客戶端服務器,我可以用它來爲我的應用程序(anroid/ios)進行業務。這將允許我輕鬆地重新編譯我的服務器,而不是嘗試配置Apache。該服務器應該能夠處理儘可能多的客戶端併爲他們的請求提供服務。目前使用fd_set並選擇我已達到最大1024個客戶端的路障。不知道下一步該怎麼做? – aali83

+0

下一步做什麼?不要寫自己的網絡服務器 - 真的 - 你會錯誤的。如果Apache太重量級看看lighttpd這樣的東西。 – msw

回答

1

不要編寫自己的生產Web服務器。

有太多的open source servers在那裏所有誰知道更多關於高連通性和SSL比你做的人寫的。他們還具有被測試的優勢,在您的自制服務器上無法完成的程度。

+0

我現在要爲我的應用程序平臺使用apache,儘管我想我會爲我的私人通信製作一個自己的服務器。我認爲這可能需要幾年時間,但最終對ssl和高級客戶機 - 服務器體系結構有充分的瞭解,我想用它來構建我自己完全支持的客戶機 - 服務器應用程序。 – aali83

+0

謝謝,這是一個雄心勃勃的項目,但我學到了很多關於C++中的socket編程的知識。 Apache很棒! – aali83

相關問題