2012-08-01 28 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