我可以看到它看起來像一個無符號int指針的別名,對嗎?它就像內存中的指針嗎?它將實際指向什麼?它指向一個結構?如果是,那麼這個結構是如何定義的?它只是一個由套接字函數使用的數字,並且不映射到內存地址?什麼是SOCKET類型?
2
A
回答
7
在Win32中,一個SOCKET
數據類型是相同的一個HANDLE
,這是用來指某種類型的內核數據結構的整數。這個內核數據結構是「不透明」的,這意味着應用程序不需要(並且事實上不能)看到結構的內部。所有對Win32 SOCKET
的訪問均通過Winsock API函數完成。
請注意,在Win16中,SOCKET
不是一回事,因爲沒有Win16 HANDLE
類型。但是,Win32爲源代碼兼容性保留了相同的類型名稱。
2
從wikipedia-
一般來說,文件描述符是在 內核駐留數據結構 包含所有打開的 文件的詳細信息條目的 指數。在POSIX中這個數據結構是 叫做文件描述符表,而 每個進程都有自己的文件 描述符表。用戶應用程序 通過系統調用將抽象密鑰傳遞給內核 ,內核 將根據密鑰代表 應用程序訪問文件。 應用程序本身無法讀取或 直接寫入文件描述符表 。 link
2
例如,您可以查看the Linux source for socket.h。雖然套接字(其類型實際上並未在socket.h中描述)的情況下,套接字是一個文件描述符,與C中的open
的返回值不同(它不用於日常編程)。
至於什麼是file descriptor:在一個非常高的層次上,它通常只是一個int,操作系統轉換爲與文件對象或網絡通信的套接字對象進行通信的方式,或者用於在進程...
相關問題
- 1. 什麼是NaCl Socket API?
- 2. 什麼是?類型?
- 3. 什麼是類型和什麼是類型構造函數scala
- 4. python socket socket的最小數據類型
- 5. '孩子'是什麼類型?
- 6. 什麼是底部類型?
- 7. 這是什麼NSErrorPointer類型?
- 8. 什麼是一種「類型」?
- 9. Typescript:什麼是類型URL?
- 10. 什麼類型是System.Byte [*]
- 11. 什麼是通用類型?
- 12. 什麼是單身類型?
- 13. 這些類型是什麼?
- 14. 什麼是unordaderable類型?
- 15. 什麼是抽象類型?
- 16. DataGridAutoGeneratingColumnEventArgs.PropertyDescriptor是什麼類型的?
- 17. 什麼是貨幣類型?
- 18. 'ios :: hex`是什麼類型?
- 19. 什麼是GUID類型?
- 20. ASP.NET-什麼是args.Value類型
- 21. 什麼是'命名類型'
- 22. 什麼是類型代碼?
- 23. 輸入是什麼類型
- 24. 什麼是類型安全?
- 25. 這是什麼類型?
- 26. 什麼是sint32類型
- 27. 什麼是複雜類型?
- 28. LetterP的類型是什麼?
- 29. 什麼是嵌套類型?
- 30. 什麼是setContentView()的類型
「Handle」定義了它是什麼,儘管這不是常規的Win32句柄。大多數HANDLE是指向它們所代表的對象的指針,而SOCKET則不是。它更像是一個ID,然後是一個HANDLE。 – Havenard 2009-08-22 02:51:05
所有Win32 HANDLE都是整數索引到內核對象表中;他們不是像這樣的指針。 – 2009-08-22 05:09:02