我正在尝试在
Windows中运行
Linux服务器.
在Linux中,套接字和文件描述符的处理方式相同.
某些系统api可用于套接字和文件描述符.
但是,我通过WIN API处理Winsock和HANDLE(文件描述符)的套接字.
Now here is the question:
Would the return value from socket()
and open() be the same in Windows?
如果它们总是不同,我可以编写自己的socket()和open()来包装系统的一个.
并记录系统的api的返回值,无论整数是套接字还是HANDLE.
如果它们是相同的,我不知道如何处理它.
套接字句柄是Win32(NT内核)句柄,因此您可以在它们上使用ReadFile或WriteFile.还有与Winsock维护的句柄相关联的用户模式状态,这就是为什么你需要使用closesocket()而不是CloseHandle().
open()返回与Win32句柄不同的CRT文件描述符.您可以使用_open_osfhandle()创建CRT文件描述符.但是不建议使用套接字,因为您无法以干净的方式关闭文件.您可以使用close()来泄漏Winsock用户模式状态,也可以使用closesocket()来泄漏CRT描述符.
原文地址:https://www.jb51.cc/windows/365389.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。