使用周公uCOS+UDP通讯的例程中的两个核心任务,并且我已经测试成功,【可以发送和接收】!!
但是这里的发送数据是将接收到的数据返回serv端, 而我需要的是【单独发送我想发送的数据】。
那我就想把recvfrom()去掉不就行了,可是【总是发送不出去啊】!!!
而且加了我改的发送任务后,连这个接收任务也无法执行了。。。
不知道问题所在,求高手解答,谢谢了!!!
部分代码如下:
/********************************************************************************************************* ** Function name: TaskB ** Descriptions: 等待UDP的信号量 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void TaskB (void *pdata) { void * UdpTemp; uint8 eer; while (1) { UdpTemp = OSQPend(RecUdpQFlag, 0, &eer); if (eer == OS_NO_ERR) { Udp_Process((Rec_Ptr *)UdpTemp); eer = eer; } } } /********************************************************************************************************* ** Function name: TaskD ** Descriptions: UDP协议数据接收和发送任务 ** input parameters: 无 ** output parameters: 无 ** Returned value: 无 *********************************************************************************************************/ void TaskD (void *pdata) { uint8 rec_buffer[100]; /* 发送缓存区 */ SOCKET s; int rec_coute, send_coute; uint16 iii; struct sockaddr servaddr, clientaddr; OSTimeDly(60); servaddr.sin_family = 0; /* 设置客户机IP地址 */ servaddr.sin_addr[0] = 192; servaddr.sin_addr[1] = 168; servaddr.sin_addr[2] = 0; servaddr.sin_addr[3] = 55; servaddr.sin_port = 1026; /* 设置服务器端口号 */ s=*socket(0, SOCK_DGRAM, UDP_PROTOCOL); /* 建立SOCKET */ clientaddr.sin_family = 0; clientaddr.sin_addr[0] = NetPort[0].My_Ip[0]; /* 设置本地IP地址 */ clientaddr.sin_addr[1] = NetPort[0].My_Ip[1]; clientaddr.sin_addr[2] = NetPort[0].My_Ip[2]; clientaddr.sin_addr[3] = NetPort[0].My_Ip[3]; clientaddr.sin_port = 1025; /* 设置本地监听端口号 */ iii = bind((SOCKET * ) & s, (struct sockaddr *) & clientaddr, sizeof(clientaddr)); /* 绑定服务器地址 */ while (1) { rec_coute=recvfrom( s, rec_buffer, 100, 0, (struct sockaddr *) & servaddr, &iii ); /* 接受数据 */ if(rec_coute > 0) { send_coute = sendto(s, rec_buffer, rec_coute, 0, (struct sockaddr *) & servaddr, sizeof(servaddr) ); /* 把接受的数据返回 */ send_coute = send_coute; /* 防止编译警告 */ } } }