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, "错误信息"); }解决 无用评论 打赏 举报