我正在用 Java 制作一个多线程 UDP 客户端/服务器应用程序,但遇到了一些障碍。我有一个“解决方案”,但我 90% 确定这是对这个问题的不完整修复。
我们将主机 1 的线程称为客户端 1 和服务器 1(C1 和 S1),将主机 2 的线程称为客户端 2 和服务器 2(C2 和 S2)。所有这些都扩展了 Thread 并覆盖了 run(),而客户端还包括一些其他方法(例如 chat() 来启动主机之间的聊天)。然后,我通过调用 start() 的第三个类启动每个相应的客户端/服务器对。
为了让数据流动,我为 C1/S2 和 C2/S1 对创建了一个套接字,并通过它发送/接收 UDP 数据报。但是,我的客户需要回复其他客户的聊天消息,因此 S1 也必须与 C1 对话,而 S2 必须与 C2 对话。
建立这种沟通的最佳方式是什么?我认为我可以例如在 localhost 上为每台机器(基于客户端类/线程)创建另一个套接字,让单个主机的客户端/服务器线程相互通信,但这似乎更像是一种解决方法而不是一个解法。有没有更好的办法?