Сокеты файловые. Вы можете использовать readи writeна сокете: они эквивалентны вызову recvи sendс flags=0. Вы закрываете их close. Вы можете перемещать их вместе с dupдрузьями, если вам нужно перемешать файловые дескрипторы. Вы можете установить некоторые флаги fcntlи использовать буферизацию stdio после вызова fdopen. Список можно продолжить. Очень важно, что вы можете вызывать selectи pollдля любого типа файла, включая сокеты, поэтому эти функции позволяют программе блокировать, пока она не получит ввод любым способом, просто перечислив дескрипторы файлов.
Существуют дополнительные системные вызовы для некоторых типов сокетов ( recvи send, shutdownи т. Д.), Например, существует дополнительный системный вызов для устройств ( ioctl).
Не все файлы имеют имена , и из тех, которые имеют, они не всегда живут в структуре каталогов. Каналы, созданные pipe(например, в конвейере оболочки), и сокеты, созданные с помощью socketpair, не имеют имен, но они по-прежнему являются файлами. Сокеты, созданные с помощью, socketимеют имя, синтаксис которого зависит от домена. Это имя передается в struct sockaddrк bindи другим функциям. Для AF_UNIXсокета Unix ( ) имя - это a struct sockaddr_un, которое является семейством и строкой; в зависимости от строки это может быть имя файла (именованные сокеты могут создаваться mknodво многих вариантах Unix) или нет (абстрактное пространство имен). Для AF_INETсокета IPv4 ( ) это имя struct sockaddr_in, содержащее номер порта и IP-адрес, а также protocolот socketвызова.