如何检查从tcp套接字读取是否会阻塞?

问题描述 投票:-3回答:1

如果我有一个tcp连接conn,怎么能确定conn.Read是否会阻塞?

我的理解是Go的Read使用非阻塞套接字,只有在没有可读数据时才会阻塞(参见https://stackoverflow.com/a/36117724/4447365)。

但有没有办法检查套接字是否没有可用的数据?

这可以通过使用read function参数为零调用POSIX count来完成。

sockets go tcp
1个回答
1
投票

在Go中编程时不要担心。假设一切都会阻止。然后把它放在goroutine中,所以它无论如何都是异步运行的。

Go运行时处理所有细节。

此外,the issue here似乎是你想要做的。这个问题被拒绝了:Go不这样做。 C也不是。即使这样做也不可靠。如果您读到最后,建议涉及Linger TCP设置的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.