2013-05-12 188 views
1

我正在制作一个程序,需要在我的网站上建立多个连接并保持打开几个小时!所以,假设我想连接300-500个连接并保持5个小时,如果我为每个连接使用线程,需要多少CPU?有没有其他的方法来做到这一点,而不是使用线程,因为它需要大量的CPU?什么是同时建立多个连接的最佳方式?

+0

你有什么控制权?你需要更明确吗?你是否控制网络服务器? – Henrik 2013-05-12 15:23:42

+2

请勿使用线程。使用线程解决这个问题就像雇用500名秘书发送500封信。 – 2013-05-12 15:31:37

+0

@EricLippert是的,我明白了。这就是为什么我要求一个替代解决方案,但我还没有找到一个... – 2013-05-12 18:22:51

回答

1

使用异步套接字API。

异步服务器套接字例 http://msdn.microsoft.com/en-us/library/fx6588te.aspx

异步客户端套接字例 http://msdn.microsoft.com/en-us/library/bew39x2a.aspx

使用异步服务器套接字 http://msdn.microsoft.com/en-us/library/5w7b7x5f.aspx

+0

这是服务器/客户端的例子,但我的网站已经托管,我不能做任何改变atm。我将如何使用它? – 2013-05-12 12:52:13

+0

您是在编写服务器还是Web应用程序(使用其他服务器,例如IIS或Apache)? – onon15 2013-05-12 14:37:29

+0

是的,我正在使用Apache。该网站是在PHP中。 – 2013-05-12 18:22:04

0

WCF是一个选项。另一个是考虑使用网络库,它可以让您选择使用线程或异步连接,NetworkComms.Netlidgren

声明:我是NetworkComms.Net的开发人员。

-2

作为应用程序消息协议的HTTP并不保持消息流的来回,但只交换单个对;一个请求和一个响应,所以从应用程序的角度来看,它是一个无连接协议。面向连接的TCP部分仅用于成功交付请求中的所有数据或响应中的所有数据。

因此,谈论保持从服务器打开HTTP连接是没有意义的。服务器可能会进行分块编码来假装它可以发送多个回复消息,但这不会凭经验实现。

+0

无国界的你的意思。 – adt 2013-05-12 13:07:33

+0

我已更新文字以回应您的评论。我不是用TCP的词汇来说话,而是从应用程序协议的角度来讲。我希望编辑改进了我想说的话。 – Henrik 2013-05-12 13:29:50

相关问题