繁体   English   中英

通过Java中的TCP发送数据记录

[英]Send a Data Record through TCP in java

我是Delphi开发人员,最近我决定将我的程序之一移植到Java,并且我正在用Java做服务器端程序,以使其跨平台。

在Delphi中,我可以很容易地通过TCP以字节数组的形式发送记录,但是我没有Java的丰富经验,也不知道如何以简单但适度的方式进行操作。 这是我的数据记录的示例:

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

我只是将它做成字节数组后就发送这种类型的记录。

关于如何在Java中进行此类数据记录以及如何设置字符串大小的任何想法,或者任何更好的建议来处理通过TCP发送它们的字符串。

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

通过Java套接字发送对象

有关更多分步示例,请访问以下链接:

JGuru-通过套接字发送对象

在您的情况下,您的对象将如下所示

class TLogin implements Serializable
{

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

   //implement your objects methods below


}

对象中您不想参与序列化和反序列化的字段可以标记为瞬态

有关序列化的详细分步示例,请访问Java序列化示例。

根据提供给我先前回复的评论进行编辑。

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

在谈到序列化之后,我们来讨论客户端-服务器问题。 如果仅计划将服务器端代码移植到Java,则可以使用以下选项来启用客户端和服务器之间的通信:

  1. 设计服务器以使用SOAP / REST与Delphi客户端进行通信。
  2. 使用标头数据结构增强您的记录,该标头数据结构包含有关所存储数据的长度和类型的信息,并在服务器端客户端传输的字节序列中使用此标头来重建对象。

但是,我认为第一种方法优于第二种方法,因为

  1. 这是一种标准的互操作技术。如果以后希望将客户端移植到其他语言(例如C#或Python),则无需更改服务器。
  2. 它使Web服务基础结构能够处理SOAP / REST序列化的细节,并使您专注于业务逻辑

我希望这个冗长的答案可以为您指明解决方案的方向

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM