ConnectionLinkFailed на GPRS-соединении

Я использую этот пример кода с помощью CodeProject для подключения к GPRS в Windows Mobile в C#.

Я попробовал код, и он отлично работает. Однако иногда я получаю сообщение «ConnectionLinkFailed» и не могу подключиться к GPRS.

Я должен подождать некоторое время, чтобы снова подключиться. Перезагрузка тоже не решает проблемы.

Кто-нибудь знает, как избежать этого исключения?

Спасибо за любую помощь!


person Ignacio Gómez    schedule 19.12.2012    source источник


Ответы (1)


На сайте MSDN только указано:

CONNMGR_STATUS_CONNECTIONLINKFAILED Ссылка для подключения была преждевременно отключена.

Дальнейшего описания нет. Я предполагаю, что у вас проблема с вашим провайдером. Кроме того, я не полагаюсь на подключения диспетчера подключений (CM). Иногда в нем говорится, что соединение доступно, но на самом деле это не так, поскольку CM использует кэшированную информацию.

Обычно для установления соединения вам достаточно отправить http-запрос. CM подберет правильное подключение. Использование CM API полезно только в том случае, если вам нужно переключаться между разными соединениями с одной и той же целевой сетью. Но обычно это не так, так как обычно у вас будет только Wi-Fi и одно соединение GPRS с Интернетом, а Wi-Fi выбирается до GPRS (из-за затрат).

Какой сценарий заставляет вас думать, что вам нужно использовать CM?

person josef    schedule 20.12.2012
comment
Я использую для установления сокетного соединения между КПК и сервером. Я думаю, что прежде чем пытаться установить это соединение, я должен быть подключен к Интернету, не так ли? - person Ignacio Gómez; 20.12.2012
comment
Да, прежде чем вы сможете использовать розетку, необходимо подключение к Интернету. Но CM установит соединение автоматически. И, как уже было сказано, CM может указать рабочее соединение, хотя оно не работает. Таким образом, лучший подход - просто открыть http-запрос на известный адрес, дополнительно использовать ping для проверки соединения, а затем запустить соединение с сокетом. Если операция сокета представляет собой HTTP-запрос, вы просто используете его только для того, чтобы сигнализировать CM об открытии соединения (если оно еще не открыто). - person josef; 21.12.2012
comment
Я сделал то, что вы мне сказали, и это намного проще. Спасибо - person Ignacio Gómez; 27.12.2012
comment
Отлично. Счастливого Нового года - person josef; 27.12.2012