0

我试图了解独立于平台的套接字通信是如何工作的,因为我想在 Java 服务器和一些本机 Unix 和 Windows 客户端之间共享套接字数据。套接字在设计上是独立于平台的,但数据表示与机器相关,因此如果 TCP 数据抽象出真实的数据格式是有利的,因为在一个系统上支持的数据格式不一定在另一个系统上支持.

例如,如果我想从 C++ 客户端程序向 Java 服务器发送一个无符号整数值,我必须告诉服务器这个数字应该被解释为一个负整数。这种抽象是如何工作的?以我有限的知识,我只会发送一个数字作为文本,然后附加某种独特的字符序列,告诉接收者他收到了什么样的数据,但我不知道这是否是一种可行的方法。

更具体一点:我想发送包含以下内容的消息:

  1. 在消息的开头是某种短信号或命令,以便接收者确切地知道如何处理随后的数据。
  2. 然后是一些任意长度的文本内容。
  3. 后跟一个数字,也可以是文本,但应单独解释。
  4. 最后可能是一个标记,告诉服务器消息在这里结束。

TCP 以字节块的形式处理数据。这是否意味着当我在一个字节中编写一个 UTF-8 编码的字符时,如果客户端机器考虑到 Java 的大端字节序,这个字符在不同机器上的解释方式相同?感谢您的任何意见和帮助。

4

1 回答 1

0

套接字是独立的但不是传输的数据(类型长度,字节顺序,字符串编码,...)

如果您想发送具有跨语言和跨平台功能的二进制数据,请查看ThriftProtobufAvro

于 2013-06-12T15:46:58.380 回答