получение данных из сокета после потери WiFi сети - PullRequest
0 голосов
/ 25 января 2010

У меня есть client/server заявка.Клиент на iPhone, сервер на Windows-based машине.Сначала я устанавливаю соединение с моим сервером, и это прекрасно работает.Когда я ухожу из зоны WiFi - клиент отключается (ожидается).

Но, когда я снова вхожу в WiFi область и пытаюсь подключиться к серверу, соединение устанавливаетсяно клиент не получает никаких данных .Мне нужно перезапустить клиентское приложение для подключения к серверу.

Почему это произошло?Это происходит всегда, когда я посылаю данные в обоих направлениях со скоростью около 1 Мбит / с.

Я буду благодарен за любую идею =)

Спасибо

Ответы [ 2 ]

0 голосов
/ 26 января 2010

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

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

0 голосов
/ 26 января 2010

Когда вы покидаете зону Wifi, Tcp обнаруживает, что у вас нет соединения, поэтому сервер прервет соединение Tcp. Вы должны восстановить его, когда вернетесь в зону действия Wi-Fi.

Я не эксперт в этой области, но, может быть, есть ограничение по времени, в течение которого, если вы повторно войдете в сеть Wi-Fi, существующее соединение Tcp будет повторно использовано?

Однако, чтобы быть надежным, вы всегда должны кодировать свое приложение, чтобы повторить попытку, если работа в Wi-Fi является одним из основных сценариев.

...