微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在同一程序中发送帧后,如何实现带有超时的读取功能?

如何解决在同一程序中发送帧后,如何实现带有超时的读取功能?

我实现了客户端和服务器之间的通信。但是我有一个问题,在发送带有函数 can_SendisoTP() 的 CAN 帧后,选择函数设置为 0,即使它应该是 1,因为它可以直接从服务器读取数据。你知道为什么它不起作用吗。

它仅在我在执行选择行之前或使用睡眠函数(std::chrono::seconds dura(1); std::this_thread::sleep_for(dura);)之前做断点时才有效/p>

                FD_ZERO(&fd);
                FD_SET(s,&fd);
                can_SendisoTP(s,result);
                //std::chrono::seconds dura(1);
                //std::this_thread::sleep_for(dura);
                rv = select(s + 1,&fd,NULL,&timeout);
                if (rv == -1)
                    perror("select"); /* an error accured */
                else if (rv == 0)
                    printf("timeout"); /* a timeout occured */
                else
                {
                    nbytes = read(s,buffer,sizeof(buffer));
                }

非常感谢!!!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。