我想送和Java中TCP套接字编程和多线程Java中
- 第一台计算机接收使用TCP套接字三台电脑之间的数据从键盘获取数据并将其发送到 第二台计算机。
- 第二计算机需要从 第一个的数据,并将其发送到第三计算机。
我的问题是:我可以在不使用多线程的情况下,在第二台计算机(它从第一台计算机接收数据并同时将数据发送到第三台计算机)中实现TCP套接字程序?
我想送和Java中TCP套接字编程和多线程Java中
我的问题是:我可以在不使用多线程的情况下,在第二台计算机(它从第一台计算机接收数据并同时将数据发送到第三台计算机)中实现TCP套接字程序?
是的,你可以。 (但它可能很愚蠢)
只绑定一个端口,并在服务器2上侦听它。 服务器1连接到服务器2并发送数据。 服务器2读取数据,连接到服务器3并在同一线程上发送数据。
没有多线程,您可以从服务器1读取输入或者将数据发送到服务器3.此外,您可以处理来自服务器1只逐个数据。该程序将运行缓慢(不会因为多线程可能会更快)。
非常感谢你。 –
由于数据是从键盘获取的,因此单线程解决方案的速度应该足够了。对于年回答, –
你应该让机器2作为服务器,会听一些固定IP:端口。将机器1和3作为客户机,它将在固定的ip:port上连接到机器2。
关于多线程,可以让你的服务器线程使用轮询/选择较少。请参阅链接Is there epoll equivalent in Java?,它更好地解释了投票/选择。
thanx。 –
java中默认/最简单的套接字支持是使用“阻塞”IO API,它需要多个线程才能正确使用。 “非阻塞”API可以单线程完成,但使用起来更复杂。 – jtahlborn