gpt4 book ai didi

c - 通过套接字获取线路

转载 作者:太空狗 更新时间:2023-10-29 15:21:03 25 4
gpt4 key购买 nike

是否有一个 libc 函数可以做与 getline 相同的事情,但可以使用连接的套接字而不是 FILE * 流?

解决方法是在套接字上调用 fdopen。这样做时应该注意哪些事情。做/不做的理由是什么。

这样做的一个明显原因是调用 getline 和 co,但也许重写一些自定义 getline 是更好的主意?

最佳答案

当您在套接字上调用读取时,它可能会过早地返回零值。例如。

 read(fd, buf, bufsize)

如果 tcp 套接字的内核缓冲区已满,则可以返回一个小于 bufsize 的值。在这种情况下,可能需要再次调用读取函数,除非它返回零或负结果。

因此最好避免使用 stdio 函数。您需要为 read 函数创建包装器,以便实现对 read 的迭代调用以可靠地获取 bufsize 字节。仅当无法从套接字读取更多字节时,它才应返回零值,就好像正在从本地磁盘读取文件一样。

你可以在书中找到 wrapper Computer Systems: A Programmer's Perspective兰德尔·布莱恩特。

源代码位于 this。地点。查找以 rio_ 开头的函数。

关于c - 通过套接字获取线路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589168/

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