Лучше держать сокет открытым для частых запросов или каждый раз закрывать сокет

Я пишу программу, которая будет делать 1 запрос GET в секунду на сервер. Я использую сокет (QTcpSocket) и хочу знать, должен ли я включать «Соединение: Закрыть» в свой запрос, а затем воссоздавать сокет для каждого запроса, или лучше просто сохранить сокет живым, потому что я повторяю один и тот же запрос раз в секунду.


person David Zorychta    schedule 15.12.2013    source источник
comment
Я бы сказал, держите его открытым. Но лучший способ узнать это — протестировать его, чтобы увидеть, как он влияет на ваше приложение.   -  person towr    schedule 16.12.2013
comment
По каналу с высокой задержкой (например, через спутник) вы обнаружите, что 1 запрос в секунду невозможен при постоянном подключении/отключении.   -  person Martin James    schedule 16.12.2013


Ответы (2)


Установление TCP-соединения занимает более одного кругового пути. Если ваше соединение является соединением SSL, есть еще несколько циклов. Если вы планируете связываться с одним и тем же пунктом назначения несколько раз, вероятно, стоит установить соединение и использовать его, пока оно еще работает. Вероятно, вам следует сделать свой код таким, чтобы отправка запроса не зависела от текущего соединения, и чтобы он [повторно] устанавливал соединение, когда это необходимо.

person Dietmar Kühl    schedule 15.12.2013

Для открытия сокета требуется 3 обмена пакетами, а для его закрытия — 4. Вы должны стремиться держать соединения открытыми, а не нести эти накладные расходы при каждой транзакции.

person user207421    schedule 15.12.2013