- 论坛徽章:
- 1
|
做了两个命令: 02 和04
一直定时发其中一个命令,停止时,换发另个命令,发现并不能立即响应,新命令一直到第七次才有响应(前6次,都是上一个命令的返回内容)
如果不加“设接收缓冲区为0”,这两句,持续发一个命令一段时间后,再发新命令,那就要发N次新命令后,才响应新命令(之前都是上一条命令的返回内容)- if (events_udp[n].data.fd == listener)
- {
- new_fd=events_udp[n].data.fd;
-
- pthread_mutex_lock(mutex);// udp lock
- int optudp =0; //设接收缓冲区为0
- setsockopt(new_fd, SOL_SOCKET, SO_RCVBUF, &optudp, sizeof(optudp));//设接收缓冲区为0
- ret = recvfrom(new_fd, recvbuf, MAXBUF, 0, (struct sockaddr *)&client_addr, &cli_len);
- if (ret > 0)
- {
- printf("\n");
- printf("revc Data length from PC:%d \n",ret);
- for(i=0;i<ret;i++)
- printf("%02X ",recvbuf[i]);
- printf("\n");
-
-
- Receive_Process(ret,recvbuf);//处理命令包函数
- pthread_mutex_unlock(mutex);//unlock
- }
- else
- {
- printf("received failed! error code %d ??message : %s \n",errno, strerror(errno));
- }
- fflush(stdout);
- }
复制代码 |
|