无需服务器连接两个客户端

时间:2016-09-23 10:24:05

标签: java sockets server connection client

我知道如何在全球范围内将客户端连接到服务器!

如果您想要快速编码以进行锻炼,请检查此链接: http://cs.lmu.edu/~ray/notes/javanetexamples/

我的问题是"如何在没有服务器的情况下连接两个客户端?"

服务器可能会在那里收听客户端,但一旦连接,我希望服务器退出交易,然后客户端可以直接通话。

我的服务器位于美国,客户A位于欧洲,客户B位于亚洲。客户是普通用户,他们只是运行应用程序并与其他客户联系 - 这是一个类似的概念,如团队查看器与洲际间的点对点连接。

请再次注意,我不想向服务器发送任何内容,我也不希望它成为客户之间的经销商。它将使服务器始终监听新连接,并防止它忙于在客户端之间交付数据。

请帮我解决这个问题。 感谢

2 个答案:

答案 0 :(得分:1)

我认为你的问题是客户端(假设它们是网络上的任何典型机器)没有众所周知的IP地址。

对于两个客户进行交谈,其中一个客户将有效地成为服务器。但是,NAT和防火墙之类的东西会阻止典型的机器打开一个可供互联网上任何其他机器使用的监听套接字。

你的问题有点像活跃的'旧FTP协议的模式,服务器连接回客户端。这种模式在现代世界中很难使用,因为客户端的IP地址的服务器概念可能是客户端专用网络的NAT网关的IP地址,以及客户端对其IP地址的想法将是一个专用网络IP地址。

答案 1 :(得分:0)

我发现这个http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html做了一些实验。

如果是这种情况,那么保持连接不会对< 3k活动连接造成伤害。

然而,我在本地测试中发现的是客户端/服务器最糟糕的部分是处理请求所需的时间。

虽然我正在使用线程,但我们都知道线程是一个假的东西,允许程序的所有部分同时运行。这是该过程的瓶颈,我必须优化该部分的算法。