пуленепробиваемый многопоточный код сокет клиент / сервер - PullRequest
0 голосов
/ 03 ноября 2018

Я начал изучать концепции IPC и сетевых сокетов в UNIX-домене, с помощью простого поиска я нашел несколько полезных книг и примеров кодов:

Я потратил почти две недели на чтение и тестирование кодов книги, а также множество примеров кодов, найденных в сети, различными способами, такими как разветвление, создание потоков, выбор метода и т. Д. я не знаю почему, но я сталкиваюсь с множеством проблем, связанных с этой темой (может быть, моя версия закона Мерфи: если есть неправильный способ что-то сделать, тогда я сделаю это с первой попытки ;)

Вот некоторые проблемы, с которыми я столкнулся:

Интересно, есть ли пример кода, обладающий всеми этими функциями:

  1. поддержка нескольких клиентов (на основе pthread)
  2. продолжает отправлять / получать между клиентом и серверами
  3. клиенты могут быть подключены, отключаться, как они хотят
  4. клиенты должны дождаться сокета сервера, даже если сервер не запущен, прежде чем клиент выполнится (например, "connect_retry", раздел 16.4, «Расширенное программирование» в книге «Среда UNIX»)
  5. Завершение работы клиента или сервера не приводит к закрытию другой сторонней программы
  6. что еще вы можете предложить?
...