-1

我制作了一个客户端-服务器应用程序,它将简单的 Java 对象发送到服务器并将它们存储在那里。但是,在这种情况下,序列化并不是必需的,因为我的对象只包含一些字符串和整数,如姓名、电话号码、地址、年龄和 ID。发送字符串更复杂,因为我需要一个可靠的应用程序协议,但我不确定这是如何正确完成的。

这就是我认为它应该工作的方式:我必须通知服务器他收到了什么,以严格的顺序发送值并发送一条消息告诉服务器传输已经结束。在 TCP 流的开头发送某种密钥以保护服务器免受未经授权的访问也是一件好事。如果有人能带领我走上正确的道路,我会非常高兴。

4

1 回答 1

1

客户端连接到服务器并使用 DataOutputStream 发送对象(作为字段)并最终关闭流

dous = new DataOutputStream(sock.getOutputStream());
for(MyObject o : objects) {
  dous.writeInt(o.getId());
  dous.writeUTF(o.getName());
  ...
}
dous.close();

服务器使用DataInputStream读取客户端发送的对象,通过EOFException判断EOS

dis = new DataInputStream(sock.getInputStream());
try {
    for(;;) {
      int id = dis.readInt(o);
      String name = dis.readUTF();
      ...
      MyObject obj = new MyObject(id, name, ...);
    }
} catch(EOFException ex) {
        // ignore, client closed OutputStream
}
于 2013-06-10T10:33:03.767 回答