WinSock 可以把 SOCKET 类型转换成 int 保存么?
原文中文,约2900字,阅读约需7分钟。发表于: 。在 Linux/Unix 等 posix 环境中,每个套接字都是一个文件描述符 fd,类型是 int,使用起来非常方便;但在 Win32 环境中是 SOCKET 类型被定义成 UINT_PTR ,是一个指针,在 x64 环境中一个 SOCKET 占用 8 个字节。 那么是否能将 SOCKET 类型强制转换成 int 类型保存没?这样就能统一用 int 在所有平台下表示套接字了,同时在...
在 Linux/Unix 中,套接字使用文件描述符,而在 Win32 中则使用 SOCKET 类型。虽然 SOCKET 是指针,但可以安全地转换为 int 类型,因为它实际上是一个表格索引,每个进程的句柄数量有限。许多开源项目(如 OpenSSL)也采用这种方式。通过程序验证,创建和释放套接字时,索引是连续的。