我有一个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可以读取。或者我应该使用较低级别的东西来查看在设置之前连接的是什么,如果它是printwwriter或ObjectOutputStream。
链接到一个深入的教程或实际的代码将工作。我在寻找一个或另一个基本设置之外的资源时遇到了麻烦。
提前感谢。
既然您建议提供听起来像是两种完全不同的服务,那么在不同的端口提供它们将是自然和适当的。要实现这一点,您的服务器将创建和管理两个独立的ServerSocket
,监听不同的端口。一个人提供一种服务;另一个会提供另一个。您可以使用线程或Selector
或它们的组合来处理两个服务器套接字和所有客户端。
作为一个单独的问题,我敦促您在依赖对象流之前仔细考虑。如果你可以在一个更简单和/或更通用的协议之上实现你的服务,那么你将避免Java序列化的多重乐趣,并且你也将为用其他语言编写的客户端打开大门。