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, "错误信息"); }
解决 无用评论 打赏 举报
悬赏问题
- ¥65 永磁型步进电机PID算法
- ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
- ¥88 找成都本地经验丰富懂小程序开发的技术大咖
- ¥15 如何处理复杂数据表格的除法运算
- ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
- ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
- ¥200 uniapp长期运行卡死问题解决
- ¥15 latex怎么处理论文引理引用参考文献
- ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
- ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?