Java 客户端通过 TCP 连接与 C++ 服务器通信

标签 java c++ networking

我是网络新手,所以希望我能够解释我的问题。

我的老板最近为我制作了一个虚拟服务器来测试我的应用程序的网络,我遇到了有关 java 到 c++ 的问题。他的服务器是用 C++ 编写的,在运行时,它会等待并监听一个名为“RemoteMsgStruct”的特定 C++ 数据结构:

typedef struct
{
unsigned int Length;
unsigned int BoardType;
unsigned int MsgType;
unsigned char Msg[MAX_MSG_SIZE];
} RemoteMsgStruct;

问题在于我的程序是用java写的。我将如何通过 java 传递类似的消息供服务器处理?

提前感谢您的帮助。如果有任何解释不够充分或似乎遗漏的内容,请告诉我。就像我说的,我是网络和 stackoverflow 的新手:)

最佳答案

你可以准确的通过你老板的测试程序所期望的数据,而不需要你的老板修改它。

在 Java 端,您可以通过多种方法在 C++ 结构定义的布局中写入数据,包括: * java.io.DataOutputStream * java.nio.ByteBuffer 和 java.nio.channels.SocketChannel。

您可能会遇到字段对齐和字节顺序的问题。 * C 结构中的某些字段可能在填充后开始以与字边界对齐。 * Java默认会写网络字节顺序(big-endian)。在 Java 端,ByteBuffer 允许选择不同的顺序。

关于Java 客户端通过 TCP 连接与 C++ 服务器通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6899937/

相关文章:

java - 针对选定的一组 Http 错误状态代码重试对外部 API 的剩余调用

java - 3D游戏几何

python - 用于构建 TCP 服务器的良好 Python 网络库?

java - 在使用 gradle 构建的 ShadowJar 中使用 truezip

java - 我的 .txt 文件应使用什么路径才能让 FileReader 读取它?

带有迭代器的 C++ 模板函数

c++ - 如何为模板方法创建别名

c++ - 猜测模板中的矩阵类型

c++ - 如何使用 VS2015 社区为 C++ 安装 ZeroMQ

c - 如何以编程方式获取用于加入多播组的接口(interface)?