2012-08-01 29 views
1

我正在編寫一個服務器,它將不斷監聽客戶端連接。它不需要任何用戶交互。所以,我試圖把它作爲一項服務。我成功安裝了它,但除了顯示錯誤1053之外它沒有成功運行。我發現啓動/停止方法應該在30秒內返回。就我而言,這意味着我的服務器應該停止其操作並在30秒內返回。我不能暗示這個約束在服務器上,因爲客戶端可能隨時連接。任何人都可以向我展示一種將此服務器作爲服務安裝的方式嗎?如何編寫一個連續監聽服務器作爲服務

注1:我使用Windows平臺,C#語言和VS 2010

注2:其他的想法也受到了歡迎。

+2

您需要可以啓動服務器在一個單獨的線程同步收聽,或讓你的服務器使用套接字函數的異步版本工作。 – 2012-08-01 08:42:55

回答

1

沒有看到你的代碼,並繼續你在這裏說什麼,我會說你應該實現線程。

現在您的應用程序開始運行,只是阻塞,直到客戶端連接。這不是最佳做法,或者對於Windows服務來說,由於30秒,這甚至是不可能的。限制。

你應該做的是啓動服務並初始化所有內容(所以它會在30秒內返回),然後啓動一個不同的監聽線程。還有一個好主意是當客戶端連接時啓動另一個線程。在這種情況下,您可以處理多個客戶端而不是一個客戶端。

當然我也沒有什麼傳輸層或如您正在使用的想法,但檢查出基於TCP這個例子:http://www.switchonthecode.com/tutorials/csharp-tutorial-simple-threaded-tcp-server