我看到它似乎是一个无符号整数指针的别名,对吗?它就像内存中的指针一样吗?它实际上指向什么?它指向一个结构体吗?如果是,那么该结构体是如何定义的?它只是一个被套接字函数使用的数字,并不映射到内存地址吗?
在Win32中,SOCKET
数据类型与HANDLE
相同,它是一个整数,用于引用某种内核数据结构。这个内核数据结构是“不透明”的,这意味着应用程序不需要(实际上也不能)看到结构的内部。所有对Win32 SOCKET
的访问都通过Winsock API函数进行。
请注意,在Win16中,SOCKET
不是同一件事情,因为没有Win16的HANDLE
类型。然而,为了源代码兼容性,Win32保留了相同的类型名称。
来自维基百科-
通常,文件描述符是一个索引,指向一个内核驻留的数据结构中所有打开文件的详细信息。在POSIX中,此数据结构称为文件描述符表,每个进程都有自己的文件描述符表。用户应用程序通过系统调用将抽象键传递给内核,内核将代表应用程序访问文件,基于该键。应用程序本身无法直接读取或写入文件描述符表。 链接
open
函数返回的文件描述符一样,也是一个文件描述符。