独立于平台套接字通信的协议
Protocol for platform independent socket communication
我试图理解与平台无关的套接字通信是如何工作的,因为我想在Java服务器和一些本机Unix和Windows客户端之间共享套接字数据。套接字在设计上是平台独立的,但是数据表示是与机器相关的,因此如果TCP数据抽象真实的数据格式是有利的,因为在一个系统上支持的数据格式不一定在另一个系统上支持。
例如,如果我想从c++客户端程序向Java服务器发送一个无符号int值,我必须告诉服务器这个数字应该被解释为一个负整数。这种抽象是如何工作的呢?以我有限的知识,我只会发送一个数字作为文本,然后附加一些独特的字符序列,告诉接收者他收到了什么类型的数据,但我不知道这是否是一个可行的方法。
更具体一点:我想发送包含以下内容的消息:
- 消息开头的某种短信号或命令以便接收方确切地知道如何处理接下来的数据。
- 然后是任意长度的文本内容。
- 后面跟着一个数字,也可以是文本,但必须是分别解释。
- 在结尾可能是告诉服务器消息结束的标记这里。
TCP以字节块的形式处理数据。这是否意味着当我在一个字节中编写一个UTF-8编码的字符时,如果客户端机器考虑到Java的大端字节顺序,那么这个字符在不同的机器上以相同的方式解释?
套接字是独立的,但不是以(类型长度,字节顺序,字符串编码,…)传输的数据
如果你想用跨语言和跨平台的功能发送二进制数据,看看Thrift, Protobuf或Avro
相关文章:
- C++ TCP 套接字通信 - 连接按预期工作,几秒钟后失败,没有收到新数据,read() 和 recv() 块
- C++ 两台不同机器之间通过wifi进行套接字通信
- 关于套接字通信的线程
- 如何使用winsock在c++应用程序中实现安全套接字通信
- 用于线程间通信的 Windows 套接字
- Python 3 套接字和 QTcpsocket (c++) 之间的通信失败
- 用于通信C++的 UNIX 套接字
- Unity WebRequest 与 c++ 套接字通信
- 使用UNIX套接字C++客户端与Node.js服务器通信的简单示例
- Python和C++之间使用本地文件套接字的进程间通信
- Android和C 套接字通信
- 客户端JavaScript和C 套接字服务器之间的通信
- 为什么从我的代码中removig textbox.appendtext()在此处更改套接字通信
- boost套接字通信无法通过一个交换机
- c侦听器与winsock-sender dll之间的套接字通信
- 使用Java实现服务器应用程序和Matlab客户端之间的套接字通信
- Java和c++之间的套接字通信
- 与asio的c++双工套接字通信
- 客户端到客户端套接字通信
- PHP和C++之间的安全套接字通信