Что на самом деле тип SOCKET? - PullRequest
2 голосов
/ 22 августа 2009

Я вижу, что это выглядит как псевдоним для беззнакового указателя int, верно? Это как указатель в памяти? На что бы это на самом деле указывало? Это указывает на структуру? Если да, то как определяется эта структура? Это просто число, которое используется функциями сокета и не отображается на адрес памяти?

Ответы [ 3 ]

7 голосов
/ 22 августа 2009

В Win32 тип данных SOCKET совпадает с типом HANDLE, который представляет собой целое число, используемое для ссылки на какую-либо структуру данных ядра. Эта структура данных ядра является «непрозрачной», что означает, что прикладным программам не нужно (и фактически они не могут) видеть внутренности структуры. Весь доступ к Win32 SOCKET s осуществляется через функции Winsock API.

Обратите внимание, что в Win16 SOCKET не было тем же самым, потому что не было типа Win16 HANDLE. Однако Win32 сохранил то же имя типа для совместимости с исходным кодом.

2 голосов
/ 22 августа 2009

Например, вы можете проверить исходный код Linux для socket.h . Хотя в случае с сокетами (тип которых на самом деле не описан в socket.h), сокет является файловым дескриптором, мало чем отличается от возврата open в C (который вы не используете в повседневной работе). дневное программирование).

Что касается файлового дескриптора : на очень высоком уровне, обычно это просто int, который ОС переводит в способ связи с файловым объектом или объект сокета для сетевых коммуникаций или канал для связи между процессами ...

2 голосов
/ 22 августа 2009

из википедии-

Как правило, файловый дескриптор является индекс для записи в резидентная структура данных ядра содержащий детали всех открытых файлы. В POSIX эта структура данных называется таблицей дескрипторов файлов, и каждый процесс имеет свой файл таблица дескрипторов. Пользовательское приложение передает абстрактный ключ ядру через системный вызов и ядро получит доступ к файлу от имени приложение, основанное на ключе. Само приложение не может прочитать или напишите таблицу дескрипторов файлов непосредственно. ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...