2

注意:我在 Windows 中运行(尽管我希望在解决此类问题的方法中尽可能跨平台)

我了解它不阻塞是一件好事,但在我的特殊情况下,我希望它阻塞,是否有任何技巧可以导致它阻塞,或者有更好的方法来处理我正在做的事情:

hPutStrLn hdl "bye\n"
hClose hdl

问题是,在hClose通过线路发送完整的“bye\n”之前调用get,在网络的另一端它只是得到“b”或“by”,然后终止hClose连接。

那么,我该如何确保在hClose切断线路之前通过线路发送完整的“bye\n”?

我是否只是短暂地使用睡眠并接受解决方案的不完美之处?

4

1 回答 1

0

答案在上面来自@DanielFischer 的评论中,只是在这里为下一个想知道的人发布,因为他不想写答案。

需要一个 hFlush hdl。

我假设输出函数的 Ln 版本会自动刷新。大多数控制台都是行缓冲的,在这种情况下这是真的,但不是全部。还值得注意的是 hClose 在关闭之前不会执行刷新。

于 2013-03-18T05:30:01.673 回答