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/

相关文章:

c++ - isPalindrome 函数 C++ 问题

c++ - Ubuntu Linux 上的 Makefile C++11 错误

c++ - 如何在 C++ 中添加属性以存在 IXMLDOMNode?

sockets - 如何在 JAVA JSSE 中操作 TLS/SSL 中的握手消息?

java - 无法通过套接字连接到其他设备

c++ - 在这种情况下如何从结构中输入字符串数组?

php - 将数据从数组注入(inject)到克隆形式

arrays - 如何在 MATLAB 中加载和存储图像堆栈

javascript - 如何获取随机生成的数字 1 到 10 的先前值?

c - 在 C 中调试使用套接字的程序时出现问题 : connect