我可以看到它看起来像是unsigned int指针的别名,对吧?它就像内存中的指针吗?实际指向的是什么?它指向一个结构吗?如果是,那该结构是如何定义的?它只是套接字函数使用的数字而不映射到内存地址吗?
答案 0 :(得分:7)
在Win32中,SOCKET
数据类型与HANDLE
相同,SOCKET
是一个整数,用于指代某种内核数据结构。这个内核数据结构是“不透明的”,这意味着应用程序不需要(实际上不能)查看结构的内部结构。对Win32 SOCKET
的所有访问都是通过Winsock API函数完成的。
请注意,在Win16中,HANDLE
并不是一回事,因为没有Win16 {{1}}类型。但是,Win32保留了与源兼容性相同的类型名称。
答案 1 :(得分:2)
-
通常,文件描述符是 一个条目的索引 内核驻留数据结构 包含所有打开的详细信息 文件。在POSIX中,这个数据结构是 称为文件描述符表,和 每个进程都有自己的文件 描述符表。用户应用程序 将抽象键传递给内核 通过系统调用和内核 将代表访问该文件 应用程序,基于密钥。该 应用程序本身无法读取或 写文件描述符表 直。 link
答案 2 :(得分:2)
例如,您可以查看the Linux source for socket.h。虽然在套接字(其类型在socket.h中实际没有描述)的情况下,套接字是一个文件描述符,与C中open
的返回不一样(你在白天不使用它)今天的节目)。
至于什么是file descriptor:在非常高的层次上,它通常只是一个int,操作系统转换为与文件对象或网络通信的套接字对象或管道进行通信的方式在流程之间进行沟通......