-
- Пояснения: под Linux/Unix не программировал, только раз с
применением QT4.xx, а тут надо прослойку сделать. Вижу кучу опций,
но при этом не знаю, какие когда применимы, и чтение документации
не помогает с просветлением. Dingo(157 знак., 12.04.2024 13:02)
- Я применяю SO_REUSEADDR для UDP броадкаст сокетов. Реюз адресов и портов требуется для UDP сокетов (AF_INET). Каким образом ты собрался "реюзать" сокеты которые представляют собой обертку над межпроцессоными пайпами? И какие у них "адреса" и "порты"? По смыслу? Хотя.... если это memory-mapped файл то как раз, я думаю это можно устроить.. - RxTx(12.04.2024 22:30)
- Хочу через Unix сокет гонять данные, но не замерзать на accept() -
будет ещё одно соединение и сигналы. Как это лучше сделать? Пока
что пытаюсь по книжкам: socket(), bind(), listen(), accept(),
close(). Но accept() блокирующий вызов, напрашивается poll(). Как
это лучше сделать? setsockopt() если нужен(или нет?), между какими
вызовами его ставить? А poll() выдаёт в вызове того, что я
нагородил POLLHUP o_O - Dingo(12.04.2024 12:57)
- У тебя локальные сокеты, представляющие собой обертку над
межпроцессными коммуникациями? Если да, accept() там неприменим.
accept() служит для приема TCP соединений у слушающего на порту TCP
сокета. - RxTx(12.04.2024 15:41)
- Да, это про межпроцессорное общение. А listen() применим? Можно ли
через один сокет и читать, и писать? Или надо второй создавать? Или
достаточно socket(), bind() и можно recv(), send()? (read(),
write()) - Dingo(12.04.2024 18:59)
- listen() используется только для создания прослушивающего сокета
для TCP, затем либо у этого сокета произойдет событие ACCEPT или же
блокирующий вызов accept() вернет сокет установившегося соединения.
Для UDP сокетов или для сокетов служащих оберткой над файлами и
пайпами listen() не требуется. Т.е. как ты и пишешь, достаточно
socket() потом связать его с именем файла/ipaddress/итд вызовом
bind(), а потом send()/recv(). - RxTx(12.04.2024 22:29)
- В большинстве случаев будет работать write/read, а send/recv нужны лишь для специфических случаев, когда требуются энти самые флаги. Eddy_Em(106 знак., 12.04.2024 22:37)
- listen() используется только для создания прослушивающего сокета
для TCP, затем либо у этого сокета произойдет событие ACCEPT или же
блокирующий вызов accept() вернет сокет установившегося соединения.
Для UDP сокетов или для сокетов служащих оберткой над файлами и
пайпами listen() не требуется. Т.е. как ты и пишешь, достаточно
socket() потом связать его с именем файла/ipaddress/итд вызовом
bind(), а потом send()/recv(). - RxTx(12.04.2024 22:29)
- Да, это про межпроцессорное общение. А listen() применим? Можно ли
через один сокет и читать, и писать? Или надо второй создавать? Или
достаточно socket(), bind() и можно recv(), send()? (read(),
write()) - Dingo(12.04.2024 18:59)
- Просто неблокирующий сделать и поллить. Пример я привел. - Eddy_Em(12.04.2024 13:37)
- Какой из файлов смотреть? Пока что я знаю слишком малую часть ответа, чтобы сформулировать вопрос. - Dingo(12.04.2024 19:01)
- У тебя локальные сокеты, представляющие собой обертку над
межпроцессными коммуникациями? Если да, accept() там неприменим.
accept() служит для приема TCP соединений у слушающего на порту TCP
сокета. - RxTx(12.04.2024 15:41)
- Пояснения: под Linux/Unix не программировал, только раз с
применением QT4.xx, а тут надо прослойку сделать. Вижу кучу опций,
но при этом не знаю, какие когда применимы, и чтение документации
не помогает с просветлением. Dingo(157 знак., 12.04.2024 13:02)