多线程服务器设置

时间:2012-01-22 23:13:36

标签: java multithreading sockets

我正在努力让两台服务器相互通信。我知道我需要使用线程,但我无法弄清楚如何设置它。我一直在研究许多只讨论客户端/服务器交互的事情,其中​​服务器在端口上设置ServerSocket,客户端连接到该端口,并可以通过输出流向服务器发送消息。

我目前得到的是一个类(路由器,充当服务器),它创建一个线程,并且在我已经运行的run()方法中

socket = server.accept();
...
while(...)
   String line = streamIn.readUTF();
...

在我的主要方法中,我要求输入关于它想要连接到哪个服务器的命令行输入,然后输入输入的IP和端口并连接。在这种情况下,我不知道如何从服务器获取输入和输出。

有没有更好的方法来尝试连接两台服务器?

谢谢!

编辑:我在这里尝试的只是在同一台计算机上进行服务器/服务器通信。我将在端口6666上运行程序,然后在7777上运行相同的程序。我希望能够连接这两个程序,以便它们可以相互通信。

1 个答案:

答案 0 :(得分:0)

让我从后面开始:

  

有没有更好的方法来尝试连接两台服务器?

绝对。最简单的方法是采用ActiveMQ之类的任何JMS系统,然后使用它来解决您的问题。这为您解决了许多非常棘手的问题,并使您的整个系统更加强大。 (另外,你编写的代码比你编写的代码少得多。)

或者,Java RMI是远程调用方法的不错选择,或者您可以挖掘MessagePack RPCProtocol Buffers based RPC来实施您的操作。

最后,HTTP是一个很棒的选择。说真的,有很多优秀的HTTP客户端和服务器可供选择,您可以将它们嵌入到Java应用程序中,这将为您解决许多这些问题。

  

我正在努力让两台服务器相互通信。我知道我需要使用线程,但我无法弄清楚如何设置它。

为什么你认为你需要线程?更具体地说,考虑系统的哪些部分需要等待和监听消息,或者与系统的其他部分同时发送消息。

然后,只有这样,添加线程才能满足这些需求。 (理想情况下,只有当您无法解决基于非阻塞或基于回调的解决方案的问题时。)

无论如何,我给你的建议是:不要自己写这个。使用现有解决方案。它会伤害很少。