Когда закрыть сокет TCP?(Идеальный случай) - PullRequest
0 голосов
/ 07 сентября 2011

Я занимаюсь разработкой мобильного приложения, которое передает дату по протоколу TCP (сокеты).Какое идеальное решение?это открыть сокет и отправить сообщение, и если я хочу отправить другое сообщение, мне нужно повторить ту же последовательность, открыть> отправить> закрыть?ИЛИ откройте> отправить> .. оставить сокет открытым ..> отправить снова> ..> закрыть ??

Если я хочу реализовать службу чата, такую ​​как мгновенные сообщения, хорошо ли закрывать сокет послекаждое сообщение, как трафик большое внимание?

Надеюсь, вопрос ясен

1 Ответ

1 голос
/ 07 сентября 2011

Зависит от частоты отправки ваших сообщений по проводам.Если вы планируете отправлять одно сообщение каждую секунду или две, вы должны оставить соединение открытым.Вот как работает протокол XMPP - потоковая передача XML по частям через открытое TCP-соединение.

Сохранение вашего соединения открытым имеет два преимущества: во-первых, установление соединения сопряжено с ценой.Во-вторых, из-за TCP / IP функция медленного запуска открытие и закрытие соединения никогда не позволит вам использовать почти полную пропускную способность сети.

С другой стороны, если вы сохраняете соединение дляслишком длинный и без какого-либо сокетного трафика, некоторые сетевые промежуточные программы, такие как маршрутизаторы или брандмауэры, могут закрыть ваше соединение, если оно не работает.Вы должны учитывать это и либо использовать keep-alive функции, либо обрабатывать переподключения прилично.

...