2014-02-05 116 views
-1

挑战:我们有许多分布式前哨的客户端,必须使用中央服务器进行管理。由于有些客户位于DMZ或代理后面,他们应该连接到服务器!套接字设计:处理连接请求TCP/UDP

由于我一次只需处理一个客户端,服务器不一定能够同时处理多个客户端,但是,我希望看到正在尝试连接的客户端列表到服务器。另外,如果客户端在中央服务器感兴趣的特定目录中有一些文件,我希望看到有关客户端的更多信息,而不仅仅是IP地址,例如地理位置和一些信息。我的问题是,如何我最好这样做。

当然,我可以简单地显示每个客户端试图在列表框中连接,只接受我想要连接的客户端,但是这真的是一种方式吗?我怀疑我能获得有关客户端的更多信息,而不是IP地址?

我想知道,如果这需要UDP。客户端发送UDP数据报,通知服务器他们还活着并且想要连接。在服务器上,我看到所有这些客户端都列出了他们发送的数据。然后,我可以选择一个客户端,发送一个答案/“连接请求”与UDP,以便这个特定的客户端将通过TCP连接到服务器?

这可能吗?

+0

如果您有兴趣避免重新发明轮子,我已经编写了一个C++服务器和库,它几乎可以处理您想要做的一切;你可以看看这里:https://public.msli.com/lcs/muscle/如果你对这种方法感兴趣,给我发一封电子邮件或一封私信,我会告诉你如何设置一个演示您需要的功能(大约需要5分钟)。 –

回答

1

这听起来像使用锤子来打破坚果。只要让他们都通过TCP连接。然后你得到他们的存在,他们的IP地址,他们关心的任何其他东西寄给你。一次处理它们。这并不难。

+0

谢谢,但现在的问题是,对于每个连接的客户端(因为它是非阻塞的),会创建一个单独的线程。所以如果有100个客户连接,我有100个线程,这真的很不幸,因为我基本上只能一次一个地工作。 – user66875