0

我有一个项目需要我创建一个将连接到 MySQL 数据库的 Java 服务器。该服务器将处理来自客户端的请求,向他们发送来自数据库的数据。来自客户的请求将是:

  • 检查用户是否在数据库中注册
  • 将用户添加到数据库
  • 获取用户列表以及其中哪些在线(这是我使用 HashMap 的地方)

经过一番搜索,我得出了使用 NIO 的结论,因此我不会获得太多线程来处理多个客户端请求。我的问题是我不明白当你想发送时如何从通道中检索数据,例如,一个列表或一个哈希映射。我的意思是,我已经了解了 read(buffer) 方法的工作原理。我只是无法理解——例如——你如何从缓冲区中取回 HashMap 对象,或者如何检索任何类型的“结构化”数据。如果有人可以解释(也许有一个例子),那就太棒了。

也许还有另一种方式来传达我需要的数据,这对我来说更容易理解。我不知道。非常感谢您的洞察力。

PS:我的问题不是因为 NIO 我没有得到它,我对典型的输入/输出流也有同样的问题。

我应该提一下,实际项目是创建一个 Java 服务器,客户端将是 android 设备。但由于我是一个新手,我想我会先测试两个桌面、Java、应用程序之间的通信,然后再选择安卓。我提到这一点是因为我看到了一些关于 Java RMI 的东西,它允许您远程使用服务器的方法,但我认为您不能在 Android 中使用它。

4

1 回答 1

0

您可以使用序列化机制读取和写入对象。涉及的类是 ObjectOutputStream 和 ObjectInputStream。但是它们是基于流的,因此它们不太适合 nio 模型。它们包含在官方教程中: http: //docs.oracle.com/javase/tutorial/essential/io/objectstreams.html

另一种方法是使用 Google 协议缓冲区。

于 2013-09-21T10:09:08.277 回答