2015-12-14 50 views
1

我想送和Java中TCP套接字编程和多线程Java中

  • 第一台计算机接收使用TCP套接字三台电脑之间的数据从键盘获取数据并将其发送到 第二台计算机。
  • 第二计算机需要从 第一个的数据,并将其发送到第三计算机。

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

+1

java中默认/最简单的套接字支持是使用“阻塞”IO API,它需要多个线程才能正确使用。 “非阻塞”API可以单线程完成,但使用起来更复杂。 – jtahlborn

回答

2

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

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

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

+0

非常感谢你。 –

+0

由于数据是从键盘获取的,因此单线程解决方案的速度应该足够了。对于年回答, –

0

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

关于多线程,可以让你的服务器线程使用轮询/选择较少。请参阅链接Is there epoll equivalent in Java?,它更好地解释了投票/选择。

+0

thanx。 –