我有一些 C# 代码,在 Windows 上运行良好,但在转换为 .NET Core 后在 Linux 上突然出现错误。
其中的特定代码涉及手动打开套接字连接并通过将套接字临时设置为非阻塞来实现超时,从而绕过 Connect 方法,轮询套接字直到它连接成功,但也有一个超时退出路径。
当非阻塞连接方法传递异常时,会抛出一个“如果我是阻塞套接字,我将在此处阻塞”(技术上称为“EAGAIN”,与字符串“Resource temporarily unavailable” 绑定)。我捕获该异常并忽略“WouldBlock”的情况,并继续执行(轮询以完成连接或等待超时发生)。不知何故,在 Linux 上我收到了“Resource temporarily available” 的错误,即使我捕获了这个错误代码。