我有一个项目,要求我创建一个将连接到MySQL数据库的Java服务器。该服务器将处理来自客户端的请求,从数据库向它们发送数据。来自客户端的请求将是:
- 检查用户是否已在数据库中注册
- 将用户添加到数据库
- 获取用户列表以及其中哪些是在线的(这是我使用 HashMap 的地方)
经过一些搜索,我得出了使用 NIO 的结论,所以我不会得到太多线程来处理多个客户端请求。我的问题是,当您想要发送例如列表或哈希图时,我无法理解如何从通道中检索数据。我的意思是,我已经看到了read(buffer)方法的工作原理。例如,我只是无法理解您如何从缓冲区中获取 HashMap 对象,或者您如何检索任何类型的"结构化"数据。如果有人可以解释(也许用一个例子),那就太棒了。
也许还有另一种方式来传达我需要的数据,这对我来说更容易理解。我不知道。非常感谢您的见解。
PS:我的问题不是因为NIO而没有得到它,我对典型的输入/输出流也有同样的问题。
我应该提到,实际的项目是创建一个Java服务器,客户端将是Android设备。但是由于我是一个新手,我想我应该先测试两个桌面Java应用程序之间的通信,然后再使用Android。我之所以提到这一点,是因为我看过一些关于Java RMI的东西,它允许你远程使用服务器的方法,但我认为你不能在Android中使用它。
可以使用序列化机制读取和写入对象。涉及的类是 ObjectOutputStream 和 ObjectInputStream。不过,它们是基于流的,因此它们不适合 nio 模型。它们在官方教程中介绍:http://docs.oracle.com/javase/tutorial/essential/io/objectstreams.html
另一种方法是使用 Google 协议缓冲区。