【发布时间】:2014-07-22 15:44:59
【问题描述】:
已解决:问题主要在于正在读取 UDP 数据包而不是数据传输的 simulink 模块集。
我正在尝试使用 winsock 从 C++ 程序中发送一个 20 字节的数字数组。我遇到的问题是数据打包,最后我希望数组中的每个数字都作为自己的字节输出,这样接收这些值的 simulink 模型就不需要额外的处理脚本。
我的数组包含 14 个布尔值 (0|1),然后是 6 个范围从 -100 到 100 的值。这些值报告控制器输入的状态。例如数组看起来像
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)
我知道这条线是有效的,因为数据包通过它只是没有像我希望的那样出现。在发送到中,消息是我试图创建的格式化字符串,以正确发送数组的所有内容。目前是任意的,并且没有什么意义,我基本上将其用于调试目的。
【问题讨论】:
-
什么是
message?您如何接收数据?你有没有试过例如send(sd, (char*) msgint, sizeof(msgint), ...)与接收端对应的recvfrom(sd, (char*) msgint, sizeof(msgint), ...)(要求两个平台具有相同的字节序和int大小)? -
看看将
msgint转换为message的代码可能会很有趣。否则恐怕你的问题会更难回答。 -
此时消息只是任意的。目前它是该行中的一个占位符,我尝试使用我在此处其他地方找到的一些转换方法,但似乎都不起作用。接收端是 DSpace MABXII,所以我正在使用他们的软件来读取端口正在获取的内容我最终遇到了套接字错误
标签: c++ arrays sockets visual-c++ udp