gpt4 book ai didi

sockets - 如何从套接字读取数据直到什么都没有?

转载 作者:行者123 更新时间:2023-12-03 11:52:47 25 4
gpt4 key购买 nike

recv Network.Socket中的函数或 Network.Socket.Bytestring需要一个参数 - 要读取的数据长度。在我的项目中,我不知道从套接字读取的数据长度。

我想 a) 读取所有聚集在一起的数据 b) 并将其连接起来

例如,在 Elixir 中,这可以满足我的要求:

:gen_tcp.recv(my_socket, 0)

在 Haskell 中,我认为我可以使用 fix 循环执行此操作.但是如何准确地使用 recv组装并返回一个整体 ByteString也来自一个循环?

此外,在文档中它说如果 recv返回0字节,表示对方的一个socket被关闭了。但是,这并不意味着所有数据都已被读取,这就是它被关闭的原因,不是吗?如果正确,我怎么能检测到呢?

最佳答案

如果您只想一次缓冲所有套接字的内容,则不需要任何花哨的套接字处理代码。只需 convert your Socket to a Handle , 并使用 hGetContents阅读全文。

关于sockets - 如何从套接字读取数据直到什么都没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711579/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com