MFC下,上位机采用UDP协议,绑定本地端口60000,向目标端口50000发送广播数据,然后单片机应答。但是上位机调用sendto函数发送失败!
3条回答
- 宋吅吅 2014-11-22 07:19关注
代码如下:
int ret = -1;
CString str;
char buf[10] = {0,1,2,3,4,5,6,7,8,9};/* 加载套接字库 */ if (!AfxSocketInit()) MessageBox("加载套接字库失败!", "错误信息"); /* 创建套接字 */ int sockfd = -1; sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (sockfd < 0) MessageBox("创建套接字失败!", "错误信息"); else { str.Format("创建套接字成功 %d", sockfd); MessageBox(str, "提示信息"); } /* 本地端口和地址 */ SOCKADDR_IN src_addr; memset(&src_addr, 0, sizeof(src_addr)); src_addr.sin_family = AF_INET; src_addr.sin_port = htons(60000); src_addr.sin_addr.s_addr = htonl(INADDR_ANY);
// inet_pton(AF_INET, "192.168.1.102", &src_addr.sin_addr.s_addr);
memset(src_addr.sin_zero, 0, sizeof(src_addr.sin_zero));/* 目标端口和地址 */ SOCKADDR_IN dst_addr; dst_addr.sin_family = AF_INET; dst_addr.sin_port = htons(50000); dst_addr.sin_addr.s_addr = htonl(INADDR_BROADCAST); memset(dst_addr.sin_zero, 0, sizeof(dst_addr.sin_zero)); /* 绑定 */ ret = bind(sockfd, (SOCKADDR *)&src_addr, sizeof(SOCKADDR)); if (ret < 0) { str.Format("绑定失败 %d", ret); MessageBox(str, "错误信息"); } else { str.Format("绑定成功 %d", ret); MessageBox(str, "提示信息"); } /* 发送数据 */ ret = sendto(sockfd, buf, sizeof(buf), 0, (SOCKADDR*)&dst_addr, sizeof(dst_addr)); if (ret < 0) { str.Format("发送失败 %d", ret); MessageBox(str, "错误信息"); }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥200 uniapp长期运行卡死问题解决
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
- ¥15 乘性高斯噪声在深度学习网络中的应用
- ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败