2013-07-13 42 views
1

我是Delphi开发人员,最近我决定将我的程序中的一个移植到java中,并且我正在使用java中的服务器端程序使其跨平台。在Delphi中,我可以很容易地通过TCP发送一个字节数组的记录,但是我没有太多的java经验,我不知道如何以一种简单而温和的方式来做到这一点。 这里是我的数据记录的一个样本:在java中通过TCP发送数据记录

type 
    Tlogin = record 
    username : string[50]; 
    password : string[50]; 
    version : word; 
    end; 

并使其字节数组后,我只想简单地将这种类型的记录。

任何有关如何在java中创建这样的数据记录的想法,以及如何设置字符串的大小或任何更好的建议来处理通过TCP发送它们的字符串。

+0

“希望这漫长的答案要点,你的方向任何更好的建议来处理通过TCP发送它们的字符串?“。是的,XML,JSON,或Web服务,正如您先前的问题的答案[链接](http://stackoverflow.com/questions/17633951/how-to-handle-a-serialized-object-sent-通过-java的过度TCP)。为什么要序列化数据的具体要求? –

回答

0

在Java中,您只需通过客户端和服务器之间的套接字发送对象,并且有多种方法可以实现这一点。对于相关的参考,请访问

Sending objects over Java sockets

为了更一步一步例如访问以下链接:

JGuru - Sending objects over a socket

你的情况,你的对象将如下所示

class TLogin implements Serializable 
{ 

    private String userName; 
    private String password; 
    private int version; 

    //implement your objects methods below 


} 

您不想参与序列化和反序列化的对象内的字段对可以被标记为短暂

对于由系列化访问的步骤一例的详细步骤中,基于提供给我的早期反应的评论 Java Serialization Example

编辑。用简单的语言进行序列化:这是一种将Java对象转换为字节序列的技术(实质上,除了那些标记为瞬态的对象的所有字段都是该字节序列的一部分)。然后可以使用该字节序列在稍后的时间点重建对象。通过序列化对象获得的字节序列可以保存到存储器或通过网络通道传输,以便在稍后阶段重新构造对象。 序列化是使用RMI,套接字或SOAP之一在Java内的客户端服务器环境内发生的许多通信协议的核心。

谈到序列化,我们来到客户端 - 服务器问题。 在的情况下,该计划只对端口的服务器端代码的Java,那么你有以下几种选择,使客户端和服务器之间的通信:

  1. 设计的服务器使用SOAP/REST与德尔福进行沟通客户。
  2. 使用标题数据结构来扩充记录,该数据结构包含有关正在存储的数据的长度和类型的信息,并在服务器端的客户机传输字节序列中使用此标题来重构对象。

然而,在我看来,第一种方法是因为

  1. 它在以后的时间点标准的可互操作的technique.If你想端口,客户端一定比第二个好其他语言如C#或Python,您不需要更改服务器。
  2. 它可以让Web服务的基础设施处理 SOAP/REST的序列化的细节问题,让您专注于业务逻辑

我对解决

+0

感谢您的回放,但是这个序列化实际上对数据做了什么?因为我的客户端应用程序是用delphi编写的,而我只打算把我的服务器移植到java。在delphi中我需要知道字符串的大小,以便读取并将其放入数据变量中,在java中它似乎是自动完成的,但在delphi中它不是 –