сетевой сокет, connect () занимает много времени в беспроводной или 3g? - PullRequest
2 голосов
/ 30 июня 2011

Я использую raw-сокет в беспроводной сети и сети 3G.
Сервер, к которому подключается клиент, работает круглосуточно, пока я тестирую,
но connect () реализован таким образом, что время ожидания увеличивается.

Проблема, с которой я сталкиваюсь, заключается в том, что подключение () часто занимает много времени (более 5 секунд или 10 секунд) по беспроводной связи или 3g.
Для проводного подключения (которое находится в той же сети, что и тестируемое беспроводное соединение: проводной и беспроводной находятся за маршрутизатором дома), метод connect () завершается почти мгновенно.
Сервер, на котором я тестирую connect (), имеет задержку 4-5 мс от домашней сети.
И сервер не принимает никакого другого запроса на подключение, кроме моего (это просто тестовый сервер)

  1. Мой предыдущий опыт работы в сети был в проводной среде, и я очень удивлен.
    Ожидается ли эта задержка при вызове connect () для беспроводных сетей и 3G?
  2. Было бы лучше повторить попытку connect () много раз с коротким тайм-аутом или попробовать connect () один раз с долгим тайм-аутом? И как бы я оценил оптимальный тайм-аут / повтор, если я даже могу попытаться

сервер работает под управлением Linux (Debian), если это имеет значение. и API, которые я использую - это bsd сокеты.

- РЕДАКТИРОВАТЬ -
При дальнейшем тестировании с 3g медленное соединение происходит всякий раз, когда клиент подключается в первый раз.
Таким образом, когда клиент подключается в первый раз, это происходит медленно, если он отключается и подключается снова менее чем за определенную продолжительность (скажем, 1 мин), соединение завершается быстро.
Однако, если клиент отключается и повторяет попытку подключения после долгой паузы (10 минут), соединение снова становится медленным.

Я подозреваю, что это связано с "маршрутизацией к IP" ..

...