Что такое сокет файл? Как его можно использовать?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Ответить
MiK13
Сообщения: 1164
ОС: Linux Debian

Что такое сокет файл? Как его можно использовать?

Сообщение MiK13 »

Собирался задать вопрос о том, как работать с GPS приёмником, но пока решил ещё попытаться разобраться самому.
А вопрос возник потому, что демон gpsd работает через файл /var/run/gpsd.sock, который является не простым файлом, а, похоже, сокетом:

Код: Выделить всё

# ls -l /var/run/gpsd.sock
srwxr-xr-x 1 root root 0 Feb 14 15:55 /var/run/gpsd.sock
То есть первая буква -- 's'
В mc он отражается чёрным цветом: =gpsd.sock -- перед именем стоит знак '='
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Что такое сокет файл? Как его можно использовать?

Сообщение NickLion »

Сокет-файл, это преставление в файловой системе unix domain socket'а aka локальные сокеты (AF_UNIX == AF_LOCAL). Работать с ними в целом как с обычными сокетами. По инициализации можно посмотреть man 7 unix. Конечно, нужно знать что за тип сокета, TCP/SOCK_STREAM или UDP/SOCK_DGRAM, а также какой протокол.
Спасибо сказали:
Аватара пользователя
Vascom
Сообщения: 1699
ОС: Fedora 32

Re: Что такое сокет файл? Как его можно использовать?

Сообщение Vascom »

На сколько я знаю, gpsd может работать и с обычным /dev/tty*
Спасибо сказали:
Аватара пользователя
s.xbatob
Сообщения: 1139
ОС: Fedora

Re: Что такое сокет файл? Как его можно использовать?

Сообщение s.xbatob »

Утверждается, что gpsd для общения с клиентами использует TCP порт 2947. Возможно, что и UNIX socket тоже. Подробности не посмотреть: официальный сайт лежит.
А TTY он использует для общения с приёмниками.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Что такое сокет файл? Как его можно использовать?

Сообщение Bizdelnick »

А в чём вопрос-то?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Что такое сокет файл? Как его можно использовать?

Сообщение MiK13 »

Bizdelnick писал(а):
15.02.2018 12:45
А в чём вопрос-то?
Основной вопрос заключается в том, как получать от GPS приёмника текущие координаты и при этом обеспечить плавную синхронизацию времени. При простой синхронизации: "получил сообщение от приёмника и установил время с нулевыми микросекундами" сбивалась работа другой программы. Поэтому решили сделать, чтобы синхронизацией занимался NTP. Это сделать получилось. Но вот забрать координаты пока не получается.
lsof показал, что gpsd открывает файл /var/run/gpsd.sock, тип которого оказался мне незнакомым. С сокетами я пока работал только через системные запросы socket(), connect() и т.п. Но эта информация видна по lsof -i. Поэтому и решил узнать, что это за тип файла.
Но, скорее всего, придётся создавать отдельную тему о том, как получать информацию от GPS. Пока тут много непонятного (в том числе, как именно запускается gpsd)
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Что такое сокет файл? Как его можно использовать?

Сообщение NickLion »

MiK13 писал(а):
15.02.2018 14:37
С сокетами я пока работал только через системные запросы socket(), connect() и т.п.

С domain сокетами точно также. Только при bind() другая структура передаётся (она всегда разная, в зависисмости от нижележащего слоя, socket_in ,socket_in6, socket_un, и т.д.)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Что такое сокет файл? Как его можно использовать?

Сообщение Bizdelnick »

В man 7 unix всё подробно описано с примерами.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
MiK13
Сообщения: 1164
ОС: Linux Debian

Re: Что такое сокет файл? Как его можно использовать?

Сообщение MiK13 »

Bizdelnick писал(а):
15.02.2018 15:17
В man 7 unix всё подробно описано с примерами.
Спасибо. Теперь понятно. Это обычные сокеты, только обмен по ним идёт внутри компьютера.
Осталось разобраться как забирать координаты.
gpspipe -r выдаёт информацию о состоянии gpsd, потом может выдать 1-2 раза информацию, пришедшую от приёмника, а может и вообще в течение нескольких минут ничего не выдавать. Хотя данные от приёмника приходят каждую секунду.

После ряда "исследований" выяснилось, что данные от GPS приёмника (с /dev/ttyUSB2) забирает не gpsd, а ntpd
Где это определяется, буду искать.
Спасибо сказали:
Ответить