gpt4 book ai didi

winsock 套接字作为文件句柄

转载 作者:行者123 更新时间:2023-12-02 14:54:47 26 4
gpt4 key购买 nike

我一直在挠头,几个小时以来一直在寻找这个问题的答案。基本上我所做的就是打开一个到其他机器的套接字并从中读取数据。然后,通过传递表示套接字的 int 的 fdopen 调用,将该套接字“转换”为文件句柄。然后将生成的文件句柄传递给 bison 解析器,该解析器直接解析通过套接字接收的数据。所有这些在 Linux 上都运行良好。现在我尝试将此代码移植到 Windows,但失败了。代码看起来像这样:

        FILE* fileHandle;
#if defined WINCE || defined WIN32
int fd = _open_osfhandle(socket, _O_RDONLY);
if (fileHandle = fdopen(fd, "r")) {
#else
if (fileHandle = fdopen(socket, "r")) {
#endif
... // code to call my parser with fileHandle as argument

bison/flex 解析器在 Windows 版本中失败,因为文件句柄似乎指向空流/文件。有人可以指出解释这些内容的综合资源或暗示替代解决方案吗?

谢谢并致以最诚挚的问候,

安德烈

最佳答案

在 Windows 中,套接字句柄不是文件句柄,并且您不能在 C API 中将其视为文件句柄。在 Linux 中,你可以。但是,在 Windows 中,套接字句柄可以传递给 ReadFile/Ex() 和 WriteFile/Ex() 函数,它们支持多种句柄类型,而不仅仅是文件,无论其名称如何。

关于winsock 套接字作为文件句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10077305/

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