通过 TCP 套接字与 ObjectInputStream、Java 和 Lua 客户端联网

Networking with ObjectInputStream, Java and Lua clients across TCP sockets

我有一个 Java 服务器,它将有两种不同类型的客户端,一个基于 Java 的控制台,以及一个服务器将控制的基于 Lua 的客户端。我有 Lua 客户与

来回交谈
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

我现在正在尝试连接一个基于 Java 的客户端,我想使用

out = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));
in = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));

我遇到的问题是了解接受连接的最佳方式,不知道另一端是 Lua 还是 Java 客户端。然后设置适当的流。

我应该在初始连接时使用不同的端口吗?我希望从 ObjectOutputStream 发送一个 BufferedReader 可以读取的字符串。或者,如果是 PrintWriter 或 ObjectOutputStream,我应该使用较低级别的东西在设置之前查看正在连接的内容。

link 深入教程或实际代码都可以。我无法找到一个或另一个基本设置之外的资源。

提前致谢。

既然您提议提供听起来像是两种完全不同的服务,那么在不同的端口提供它们是自然而恰当的。为实现这一点,您的服务器将创建和管理两个单独的 ServerSocket,监听不同的端口。一个会提供一种服务;另一个会提供另一个。您可以使用线程或 Selector 或它们的组合来处理两个服务器套接字和所有客户端。

另外,我敦促您在依赖对象流之前仔细考虑。如果您可以在更简单的 and/or 更通用的协议之上实现您的服务,那么您将避免 Java 序列化的多重乐趣,并且您还将为使用其他语言编写的客户端敞开大门。