如何使用NIO从服务器检索数据

时间:2013-09-21 09:59:50

标签: java android mysql client-server

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

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

经过一些搜索,我已经总结了使用NIO,所以我不会得到太多的线程来处理多个客户端请求。 我的问题是,当您要发送List(例如List或HashMap)时,我无法理解如何从通道中检索数据。我的意思是,我已经看到了read(buffer)方法的工作原理。我只是无法理解 - 例如 - 如何从缓冲区中获取HashMap对象,或者如何检索任何类型的“结构化”数据。如果有人可以解释(可能有一个例子),那就太棒了。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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