Я вижу, что это похоже на псевдоним для указателя int без знака, не так ли? Это как указатель в памяти? На что это будет на самом деле указывать? Указывает на структуру? Если да, как определяется эта структура? Это просто номер, который используется функциями сокетов и не отображается на адрес памяти?Что такое тип SOCKET?
ответ
В Win32, тип данных SOCKET
является такой же, как HANDLE
, который является целым числом, используется для обозначения структуры данных ядра некоторого вида. Эта структура данных ядра «непрозрачна», что означает, что прикладные программы не нуждаются (и фактически не могут) видеть внутренности структуры. Все доступ к Win32 SOCKET
s осуществляется через функции API Winsock.
Обратите внимание, что в Win16, SOCKET
было не то же самое, потому что не было типа Win16 HANDLE
. Однако Win32 сохранил одноименное имя для совместимости с исходным кодом.
из wikipedia-
Обычно дескриптор файла является индекс для записи в ядро-резидентной структуры в данных, содержащей информацию обо всех открытых файлов. В POSIX эта структура данных равна , называемой таблицей дескриптора файла, и каждый процесс имеет свой собственный файл дескриптора . Пользовательское приложение передает абстрактный ключ в ядро через системный вызов, а ядро будет обращаться к файлу от имени приложения на основе ключа. Само приложение не может прочитать или непосредственно написать таблицу дескриптора файла . link
Вы можете проверить, например, the Linux source for socket.h. Хотя в случае сокетов (тип которых фактически не описан в socket.h), сокет является файловым дескриптором, не похожим на возврат open
в C (который вы не используете в повседневном программировании).
Что касается file descriptor: на очень высоком уровне, как правило, это просто int, что ОС преобразуется в способ связи с файловым объектом или сокетным объектом для сетевой связи или с каналом связи между процессы ...
- 1. Что такое Socket
- 2. Что такое io и socket?
- 3. Что такое NaCl Socket API?
- 4. Что такое тип тегов?
- 5. Что такое тип?
- 6. Что такое тип данных?
- 7. Что такое MIME-тип
- 8. Что такое тип сокета?
- 9. Что такое универсальный тип?
- 10. Что такое тип возврата «()»?
- 11. Что такое "[тип объекта]"
- 12. Что такое sint32 тип
- 13. Что такое динамический тип
- 14. Что такое? тип?
- 15. Что такое тип?
- 16. Что такое тип Vec3b?
- 17. Что такое тип записи?
- 18. Что такое стереофонический тип
- 19. Что такое «тип»?
- 20. Что такое абстрактный тип?
- 21. Что такое тип орда?
- 22. Что такое SOCKET accept() error errno 316?
- 23. Что такое дескриптор файла/connection/socket/ip?
- 24. Что такое механизм сердцебиения Socket-IO?
- 25. Что такое тип языка для
- 26. Что такое «двойной» тип строки?
- 27. Что такое безопасный тип .net?
- 28. C# Что такое тип System.Object [*]?
- 29. Что такое тип углового 2?
- 30. Что такое тип буфера Python?
«Ручка» определяет, что это такое, несмотря на то, что это не обычная ручка Win32. Большинство HANDLE являются указателями на объекты, которые они представляют, SOCKET этого не делает. Это больше похоже на идентификатор, а затем ручку. – Havenard
Все дескрипторы Win32 являются целыми индексами в таблице объектов ядра; они не являются указателями как таковыми. –