c++ - 使用winsock vc++通过UDP发送数字数组

标签 c++ arrays sockets visual-c++ udp

已解决:问题主要出在读取 UDP 数据包而不是数据传输的 simulink 模块组。

我正在尝试使用 winsock 从 c++ 程序中发送一个 20 字节的数值数组。我遇到的问题是数据打包,最后我希望数组中的每个数字都作为自己的字节输出,以便接收这些值的我的 simulink 模型不需要额外的处理脚本。

我的数组包含 14 个 bool 值 (0|1),然后是 6 个介于 -100 到 100 之间的值。它们报告 Controller 输入的状态。例如数组看起来像

    int array msgint[20] = [1,0,1,0,0,1,1,0,0,0,0,0,0,0,50,80,-90,40,90,-20];

我尝试过使用类型转换和发送多个字符串,但所有这些似乎只是重新排列我收到的乱码或导致套接字错误。目前我的 sendto 函数看起来像

        sendto(sd,message,80,0,(struct sockadd *) &server,server_length)

我知道这条线是有效的,因为数据包通过它只是没有像我希望的那样出现。在发送到中,消息是我试图创建的格式化字符串,以正确发送数组的所有内容。目前 is 是任意的并且意义不大,我基本上出于调试目的使用它。

最佳答案

你的出发点是错误的。网络通信应该从有线协议(protocol)的设计开始。

您将如何在网络上表示某些内容。二进制或文本。大多数“现代”协议(protocol)使用文本(json 或 xml)。几年前二进制很热门 (asn1/ber/der)。我建议 json

那么你将如何包装有效负载。你需要说'这是一组xxxs。现在这里是一组 yyyys'。我不知道你在做什么,所以很难说出你需要什么

关于c++ - 使用winsock vc++通过UDP发送数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24891927/

相关文章:

没有 .NET 的 C++ 注册表处理

c++ - 在 C++ 中读取可变长度的用户输入

c++ - 在 GCC 中添加到父目录的包含路径

javascript - 使用 forEach() 返回数组值

python - 通过套接字发送包含文件的字典(python)

c# - RemoteEndPoint 与 LocalEndPoint

c++ - 为 C++ 二叉搜索树使用智能指针

javascript - 如何将元素插入循环中特定索引处的数组

java - null 值被视为对象或数组

c - 使用 GIOChannel 和 GTK+ 从发件人处获取 IP 地址