繁体   English   中英

UDP async_receive的boost :: asio错误

[英]boost::asio error for UDP async_receive

我遇到了一个来自boost :: asio的奇怪错误的问题。 我正在实现一半的TFTP服务器(仅限服务器 - >客户端)。 我在第一个套接字上的端口69上获得第一个RRQ数据包,然后创建另一个套接字以执行DATA,ACK交换。 我在该套接字上启动async_receive(),然后对第一个数据包执行send()。 然后我得到接收的处理程序回调(我假设ACK进来)并且它给出错误“没有连接可以因为目标机器主动拒绝它”我从另一个线程理解这里意味着ERROR_PORT_UNREACHABLE。

我真的不明白接听电话如何导致无法解决的错误,因为我没有接触任何东西,我收到了。 我检查了send()的结果,那里没有错误。

我检查了套接字中的本地和远程端点(错误之前和之后),并且它们具有正确的IP地址和端口。

有任何想法吗? 我已经google了,找不到其他人有这个问题。 大多数结果导致我进行stackoverflow,所以我在这里问。

编辑 - 我的问题是我正在使用调试器。 当我开始发送第一个数据包时,在客户端在大约一秒钟内发送了十几个请求之后,客户端超时并放弃了我的数据为时已晚。 当我没有断点运行时它工作正常。 感谢大家的建议。 正在看Wireshark的数据包给了我线索。

发送成功的原因是发送只是表明已将数据包提供给操作系统。 特别是,操作系统然后将该数据包发送到目的地,并以一个IP数据包响应,指示主机没有收听。 然后,您的操作系统会收到它,并在您的套接字上设置一个标志,导致下一次读取失败。 由于您已经在执行异步接收,因此会导致接收返回错误。

如果可能的话,我强烈建议使用wireshark或类似的东西观看UDP交换,看看是否可以识别任何其他问题。 我不熟悉TFTP协议,并且不能在那里提供太多输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM