是否有任何“好”方法可以使等待 recvfrom() 调用的线程解锁并返回错误?
这样做的动机是为包含读取 UDP 数据报的单元的系统编写单元测试。其中一个分支处理 recvfrom 调用本身的错误。代码不需要区分不同类型的错误,它只需要设置一个标志。
我曾想过从另一个线程关闭套接字,或者关闭它,以导致 recvfrom 返回错误,但这似乎有点笨拙。我在其他地方看到过发送一个过大的数据包可以做到这一点,因此设置了一个实验,将一个 16K 的缓冲区发送到一个等待 4K 的 recv,但这并没有导致错误。recvfrom 只返回 4096,表示它已经获得了那么多字节。