2013-03-25 189 views
0

我在网站上寻找我的问题,但似乎我无法找出解决方案。我有Java非阻塞客户端服务器程序,它运行良好。我以hereJava客户端/服务器 - 我们可以使服务器作为客户端到另一台服务器吗?

为例,我的问题是,如何将服务器作为客户端连接到另一台服务器?现在,我的服务器将有2个监听端口等待来自客户端的连接请求,并且已经完成。现在,我想让服务器在同一时间可以使用不同的端口连接到另一台服务器。我不知道我该如何实现这一目标。希望有人能提出一些想法。非常感谢你们!

+0

您是否尝试使用多线程,我的意思是启动一个具有客户端代码并可以连接到其他服务器的线程? – 2013-03-25 08:25:28

+2

只需创建具有客户端代码的另一个线程。而已。 – kaysush 2013-03-25 08:27:09

+0

@Sudhanshu我使用nio,它允许我减少线程。 – UserProg 2013-03-25 08:27:13

回答

1

从您的服务器代码运行客户端到另一台服务器。就如此容易。你曾经尝试过什么,并且无法在这个场景中完成?您可能想要使用Apache HTTP(它具有同步和异步版本)客户端或Netty异步HTTP客户端。 Apache的HTTP客户端教程here

+0

现在,我不知道应该在哪里将客户端代码放入我的服务器代码中。我可以放在任何地方吗? – UserProg 2013-03-25 08:28:15

+0

添加了指向教程的链接 - 请检查。 – maggu 2013-03-25 08:29:56

+0

非常感谢,非常感谢。好像我可以在任何我认为合适的服务器代码中执行客户端代码的权利? – UserProg 2013-03-25 08:35:59

0

我认为代理应该排序你。更多here

+0

非常感谢,谢谢。看起来像我以前有什么。现在我有一个不同的架构。但是,这个想法看起来是一样的,在需要时连接到另一台服务器。如我错了请纠正我。 – UserProg 2013-03-25 08:48:28

+0

代理服务器坐在并等待,正在监听运行它的本地计算机上的特定端口。一旦对该端口发出请求,代理就会建立到指定远程主机上指定端口的连接。 – tmwanik 2013-03-25 08:53:34

+0

非常感谢你.... – UserProg 2013-03-28 07:42:30

0

是的,您可以将客户端代码放入服务器。就像您可以从Java Servlet中下载HTML页面一样。

您的服务器应该有一个处理来自客户端的传入请求的“处理程序”组件。在这个处理程序代码中,可以将您的客户端代码连接到不同的服务器。

我想你会感到困惑的是,传入连接和传出连接现在都在相同的poll-the-selector循环中处理,或者?据我所知,您可以将对象附加到选择器键上。用它来表明这不是一个传入连接,而是一个传出连接,并且处理所有传出连接与传入连接不同。您甚至可能必须以某种方式连接这些传入和传出连接,以便知道哪个传出连接匹配哪个传入连接。