使用ObjectInputStream进行网络连接,Java和Lua客户端通过TCP套接字进行连接。

我有一个 Java 服务器,将有两种不同类型的客户端,一个基于 Java 的控制台和一个由服务器控制的 Lua 客户端。我已经让 Lua 客户端来回通信了。现在我正在尝试连接一个基于 Java 的客户端,我希望使用

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

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

我应该在最初的连接上使用不同的端口吗?我希望使用 ObjectOutputStream 发送字符串,BufferedReader 可以读取。或者我应该使用更低级别的东西来看看正在连接什么,然后设置它是 PrintWriter 还是 ObjectOutputStream。

深入教程或实际代码的链接将有所作为。我很难找到超出单一模式设置的资源。

提前感谢。

点赞
用户2402272
用户2402272

鉴于您打算提供听起来完全不同的两项服务,提供不同的端口是合理和适当的。为了实现这一点,您的服务器将创建和管理两个独立的 ServerSocket,侦听不同的端口。一个将提供一种服务,而另一个将提供另一种服务。您可以使用线程或 Selector 或两者的组合来处理两个服务器套接字和所有客户端。

作为一个单独的问题,我敦促您在依赖对象流之前仔细考虑。如果您可以在更简单和/或更通用的协议上实现您的服务,那么你将避免 Java 序列化的多重乐趣,同时也为使用其他语言编写的客户端留下了空间。

2015-09-14 21:15:13