我正在用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中的每一台机器(基于客户机类/线程)创建另一个套接字,让一个主机的客户机/服务器线程相互通信,但这似乎更像是一种解决方法,而不是一个办法。还有更好的方法吗?