我不知道Haskell,但是“资源暂时不可用”是
EAGAIN。
看起来Haskell默认将其套接字设置为非阻塞模式。因此,如果您在没有数据的情况下尝试从其中一个读取数据,或者在缓冲区中的数据已满时尝试向其中之一进行写入操作,则会失败
EAGAIN。
弄清楚如何将套接字更改为阻塞模式,我敢打赌,您将解决您的问题。
[更新]
或者,在尝试读取或写入套接字之前,先调用
select或
poll。但是,您仍然需要处理
EAGAIN,因为在极少数情况下,Linux
select会指示套接字已准备就绪,而实际上尚未就绪。



