IPC: подключаться к каждому запросу или держать сокет открытым? - PullRequest
4 голосов
/ 30 мая 2011

Я планирую использовать сокеты (локальный TCP) для связи между двумя процессами (запущенными локально).Один процесс будет действовать как сервер, но оба процесса отправляют сообщения друг другу асинхронно.Должен ли я оставить соединение с сокетом открытым в течение всего жизненного цикла процессов или повторно подключиться к каждому запросу?

Могут ли возникнуть какие-либо проблемы, если я оставлю локальный сокет открытым?

Ответы [ 2 ]

5 голосов
/ 30 мая 2011

Держите розетку открытой.

Это более простой вариант, и вам не придется тратить время на открытие нового сокета (с точки зрения клиента) или прием нового клиента (с точки зрения сервера).

1 голос
/ 30 мая 2011

Если это всего лишь один клиент, то вы должны оставить сокет открытым, но быть готовым к повторному подключению в случае ошибки (например, пользователь мог сбросить сетевые интерфейсы, поэтому подключение не гарантируется, что оно будет живым).Если у вас много клиентов, используйте отключение по истечении определенного времени бездействия.Это позволит вам избавиться от неактивных, зависших или «потерянных» (тех, которые прошли, но не было сигнала о закрытии сокетов от них) клиентов.

...