java

时间:2015-12-14 16:28:54

标签: java multithreading tcpsocket

我想使用Java中的TCP套接字在三台计算机之间发送和接收数据

  • 第一台计算机从键盘获取数据并将其发送给 第二台电脑。
  • 第二台计算机从中获取数据 首先将其发送到第三台计算机。

我的问题是:我可以在第二台计算机上实现TCP套接字程序(它从第一台计算机接收数据并同时将其发送给第三台计算机)而不使用多线程吗?

2 个答案:

答案 0 :(得分:2)

是的,你可以。 (但这可能是愚蠢的)

只需绑定端口并在服务器2上侦听它。 服务器1连接到服务器2并发送数据。 服务器2在同一个线程上读取数据,连接到服务器3并向他发送数据。

如果没有多线程,您可以从服务器1读取输入,或者将数据发送到服务器3.此外,您只能逐个处理来自服务器1的数据。该程序将运行缓慢(不会像多线程那样快)。

答案 1 :(得分:0)

你应该把机器2作为服务器来监听一些固定的ip:端口。将机器1和3作为客户端,将连接到固定IP:端口上的机器2。

关于多线程,您可以使用poll / select来减少服务器线程。请参阅链接Is there epoll equivalent in Java?,它更好地解释民意调查/选择。