Проверьте сетевое подключение и скорость подключения к сети в xamarin, android [duplicate]

Интересно, что ни один из ответов на этой странице не упоминает два крайних случая, надеюсь, никто не возражает, если я их добавлю:

Случай с краем # 1: одновременный доступ к словарю

Родовые словари в .NET не являются потокобезопасными, а иногда могут бросать NullReference или даже (чаще) a KeyNotFoundException при попытке получить доступ к ключу из двух параллельных потоков. Исключение в этом случае является довольно ошибочным.

Случай с краем # 2: небезопасный код

Если код NullReferenceException задан кодом unsafe, вы можете посмотреть на переменные указателя , и проверьте их на IntPtr.Zero или что-то в этом роде. Это одно и то же («исключение нулевого указателя»), но в небезопасном коде переменные часто переводятся в типы значений / массивы и т. Д., И вы ударяете головой о стену, задаваясь вопросом, как тип значения может исключение.

(Еще одна причина для небезопасного использования небезопасного кода, если вам это нужно)

150
задан Maggie 11 August 2011 в 13:57
поделиться

23 ответа

Для этого вы можете использовать эмулятор. Взгляните на эту страницу: Android Emulator . Обратите внимание на следующие два аргумента:

  1. -netdelay <delay> Установите эмуляцию латентности сети на. Значение по умолчанию - нет. См. Таблицу в эмуляции сетевой задержки для поддерживаемых значений.
  2. -netspeed <speed> Установите эмуляцию сетевой скорости в. Значение по умолчанию заполнено. См. Таблицу в эмуляции сетевой скорости для поддерживаемых значений.
82
ответ дан benscabbia 25 August 2018 в 00:25
поделиться

Go Run> Запустите конфигурацию, выберите приложение Android и перейдите на вкладку Target. Делайте изменения, как показано на рисунке.

enter image description here [/g1]

2
ответ дан Abhi 25 August 2018 в 00:25
поделиться

Facebook построил нечто, называемое Расширенное управление трафиком . Краткий обзор с их страницы GitHub:

Расширенное управление трафиком (ATC) - это инструмент для моделирования условий сети. Он позволяет управлять подключением устройства к Интернету. Разработчики могут использовать ATC для тестирования своего приложения в разных условиях сети, легко подражая высокоскоростным, мобильным и даже сильно поврежденным сетям. Аспекты подключения, которые можно контролировать, включают в себя:

  • полоса пропускания
  • латентность
  • потеря пакетов
  • поврежденные пакеты
  • заказы пакетов

Чтобы иметь возможность формировать сетевой трафик, ATC должен работать на устройстве, которое направляет трафик и видит реальный IP-адрес устройства, например например, ваш сетевой шлюз. Это также позволяет любым устройствам, проходящим через ATC, иметь возможность формировать свой трафик. Трафик может быть сформирован / не изменен с помощью веб-интерфейса, позволяющего любым устройствам с веб-браузером использовать ATC без необходимости в клиентском приложении.

Вы можете найти его здесь, в GitHub: https://github.com/facebook/augmented-traffic-control

Они также написали сообщение в блоге об этом: https://code.facebook.com/posts / 1561127100804165 / дополненного-трафик контрольно-а-инструмент-к-Simulate-сеть-условие / [/ д2]

6
ответ дан Anirudh 25 August 2018 в 00:25
поделиться

, предложенный @VicVu Charles (или любым другим прокси-инструментом), - это более простой способ. Но я хотел бы добавить, что вы можете сделать это и с вашим устройством, а не только с genymotion или другими эмуляторами. Процесс будет таким же:

Измените настройку wifi вашего устройства / эмулятора для использования ручного прокси. И затем установите имя прокси-сервера & amp; порт a. задайте имя хоста как ip вашей системы (получите ip вашего компьютера / mac с помощью ifconfig / ifconfig). b. установите номер порта genymotion (проверьте настройки прокси-сервера в charles)

PS: ваше устройство / эмулятор ДОЛЖНО использовать один и тот же Wi-Fi, поскольку используемый вами ip скорее всего будет частным ip.

1
ответ дан Ankit 25 August 2018 в 00:25
поделиться

У меня есть одна стратегия для решения вашей проблемы. Вы можете использовать приложение прокси для изменения или контроля вашего сетевого статуса. например, Чарльз.

Вы должны изменить конфигурацию по умолчанию в Charles, как показано на следующем рисунке.

И, наконец, вы обнаружите, что чистый статус был сформирован в более низкий темп.

4
ответ дан Benchur Wong 25 August 2018 в 00:25
поделиться
  1. Откройте терминал inAndroid Studio и перейдите к ../../Android/sdk/tools.
  2. Запустить ./emulator -netdelay "delay_in_millis" -avd "emulator_device_name" Пример: ./emulator -netdelay 60000 -avd Nexus_5_API_21
  3. Теперь выполните сборку ваше приложение и установите его в эмулятор.
  4. Запустите сценарий в приложении.

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

1
ответ дан cgr 25 August 2018 в 00:25
поделиться

Вы пробовали это? Настройки - Сети - Дополнительно - Мобильные сети - Сетевой режим - Выберите предпочтительную сеть (например, 2G).

Другой метод, который я использовал, упоминался выше. Подключитесь через iPhone. Надеюсь, это поможет.

0
ответ дан Charlie Brown 25 August 2018 в 00:25
поделиться

Обновление для Android Studio версии 1.5 или выше Как @LouMorda упомянула в комментарии ниже, что вкладка Emulator, упомянутая в оригинальной записи, была удалена в Android Studio v 1.5.

Теперь они установили эти настройки в настройках симулятора в AVD Manager. Для доступа к этим настройкам:

  1. Выберите Tools -> Android -> AVD Manager
  2. Нажмите кнопку Edit AVD (значок карандаша)
  3. Доступ к Network Settings после нажатия кнопки Show Advanced Settings

Вот скриншот, как это может выглядеть:

Оригинальное сообщение Для тех, кто использует Android Studio IDE :

  1. Перейти к Run -> Edit Configurations
  2. Выбрать Android Application -> [Your App]
  3. Выбрать вкладку Emulator
  4. Здесь вы можете изменить различные значения для Network Speed и Network Latency для имитации различных скоростей и латентностей и т. д.

. Кроме того, вы можете ввести различные аргументы в текстовое поле Additional command line options, как указано в ответе @ inazaruk.

Снимок экрана ниже описывает, как выглядит этот экран Run Configuration:

Run Configurations Screen in Android Studio beta 0.8.6 [/g2]

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

Изменить Для тех, кто использует eclipse, см. ответ @ Abhi ниже.

54
ответ дан Community 25 August 2018 в 00:25
поделиться

Вы хотите проверить отсутствие сетевого подключения или просто медленное сетевое соединение? Если первое, вы можете перейти к Settings > Wireless & networks > Airplane mode и включить режим полета. Это позволит вам проверить недоступность сети на реальном устройстве.

1
ответ дан David Conrad 25 August 2018 в 00:25
поделиться

Я боролся с этой проблемой полдня, наконец, я пришел к этому решению:

  • Тестирование на реальном устройстве не имеет большого смысла в целом, поскольку вам нужно пройти через чтобы заставить его работать. Единственный логичный способ добиться реального тестирования - сделать ваш телефон подключенным к сотовой сети низкого качества, например, EDGE, если ваша телефонная компания предоставляет ее. Вы можете попробовать сделать это, набрав *#*#4636#*#* в приложении телефона
  • . Оригинальный эмулятор Android слишком медленный для тестирования и не достигает большего, чем решение выше.

Лучший способ сделать это - использовать Genymotion .

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

Запустите прокси-сервер на хост-машине, который имитирует плохие сетевые условия, например Crapify или Toxiproxy (я тестировал только первый), и вам хорошо идти.

Обновление:

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

2
ответ дан Iman Akbari 25 August 2018 в 00:25
поделиться

Существует простой способ тестирования низких скоростей на реальном устройстве, которое, кажется, было упущено. Для этого требуется подключение к сети Mac и ethernet (или другое проводное).

Включите совместное использование Wi-Fi на Mac, превратив ваш компьютер в точку доступа Wi-Fi, подключите ваше устройство к этому. Используйте Netlimiter / Charles Proxy или Network Link Conditioner (который вы, возможно, уже установили) для управления скоростями.

Для получения дополнительной информации и для понимания того, какие скорости вы должны проверить при проверке: http://opensignal.com/blog/2016/02/05/go-slow-how-why -в-тест-приложения-на бедных-соединение /

7
ответ дан James_OSM 25 August 2018 в 00:25
поделиться

Или на реальном устройстве вы можете перейти в Настройки -> Мобильные сети -> Предпочтительные типы сетей и выбрать самый медленный доступный ... Конечно, это очень ограниченно, но для некоторых целей тестирования этого может быть достаточно.

4
ответ дан jpm 25 August 2018 в 00:25
поделиться

Поскольку опция разработчика iPhone применима к Wi-Fi-модему, вы можете получить iPhone с iOS 6 и выше (и был установлен на use for developments с xcode), настроить его для эмуляции нужного сетевого профиля, подключения ваше Android-устройство в свою точку доступа

enter image description here [/g0]

90
ответ дан Kirill Kulakov 25 August 2018 в 00:25
поделиться

Просто зайдите на Android-монитор устройства из студии Android, затем DDMS -> Emulator Control. Там будут свойства скорости и задержки.

1
ответ дан Lester 25 August 2018 в 00:25
поделиться

и для пользователя Mac OS вы можете использовать Network Link Conditioner, который можно загрузить из Apple. установите его как AP на mac, и любые его подразделения могут подключиться.

вы можете использовать инструменты open source с помощью facebook ATC http://facebook.github.io/augmented-traffic-control/

3
ответ дан Lucas Liu 25 August 2018 в 00:25
поделиться

Я использую прокси-сервер mitmproxy HTTPS. https://mitmproxy.org/

Mitmproxy - это приложение с открытым исходным кодом, которое позволяет перехватывать HTTP и HTTPS-соединения между любым клиентом HTTP (S). Он позволяет контролировать, фиксировать и изменять эти соединения в реальном времени. Изменить запрос, ответ, заголовок, ... Кроме того, вы можете перехватывать разные запросы.

, например. response_delay.py:

from mitmproxy import http
from time import sleep

def response(flow: http.HTTPFlow) -> None:
    sleep(5.0)

Затем выполнение этого комментария задерживает все ответы с сервера:

mitmproxy --cert \*.asdf.at=./cert.pem --scripts response_delay.py

В моем приложении я использую фиксацию сертификата, поэтому вы необходимо добавить сертификат (private + public)

cat private.key public.key> cert.pem

Здесь вы можете найти простой учебник .

Здесь вы можете найти другие примеры сценариев здесь .

0
ответ дан Manuel Schmitzberger 25 August 2018 в 00:25
поделиться

Я нашел netlimiter4 лучшим решением для дросселирования данных для эмуляторов. Он обеспечивает гранулированный контроль через приличный gui и дает вам графическую обратную связь по пропускной способности данных для каждого процесса. В настоящее время в бесплатной бета-версии. screenshot

http://www.netlimiter.com/products/nl4

В магазине воспроизведения есть приложения для дроссельной заслонки для реальных устройств, но они требуют root (я не могу дать какие-либо рекомендации относительно того, насколько хорошо они работают, если вообще - YMMV.)

искать bradybound в магазине воспроизведения, я не могу опубликовать более одной ссылки ..

1
ответ дан Michael. 25 August 2018 в 00:25
поделиться

UPDATE на студии Android AVD:

  1. открыть AVD-менеджер
  2. создать / отредактировать AVD
  3. нажать дополнительные настройки
  4. выберите предпочтительную настройку подключения

Нет микроволн или лифтов:)

2
ответ дан nurxyz 25 August 2018 в 00:25
поделиться

Простой способ протестировать ваше приложение с низким / плохим соединением в эмуляторе:

Go Run> Запустите конфигурацию, выберите приложение Android и перейдите на вкладку Target. Посмотрите параметры запуска эмулятора. Здесь вы можете легко изменить скорость сети и сетевую задержку.

8
ответ дан pgarriga 25 August 2018 в 00:25
поделиться

Я знаю, что это старый вопрос, но ...

Некоторые телефоны в настоящее время имеют настройки для использования только 2G. Он идеально подходит для имитации медленного интернета на реальном устройстве.

enter image description here [/g0]

29
ответ дан Pkmmte 25 August 2018 в 00:25
поделиться

Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому, помещая устройство в микроволновую печь (НЕ включайте микроволновую печь, пока ваше устройство внутри!) Приведет к значительному снижению уровня сигнала. Он определенно бьет, стоя в лифте ...

206
ответ дан Shams Shafiq 25 August 2018 в 00:25
поделиться

Годы, но эй, я буду звонить с помощью своего надежного метода с помощью Genymotion.

  • Загрузите бесплатную пробную версию Charles: http://www.charlesproxy.com/download /
  • Установите его
  • Нажмите Proxy -> Throttle Settings
  • Настройте скорость дроссельной затухания HTTP
  • Закройте это окно
  • Нажмите Proxy -> Throttling, чтобы включить дроссель
  • Откройте эмулятор Genymotion
  • Откройте настройки Wi-Fi
  • Длительное нажатие на включенное соединение Wi-Fi
  • Нажмите Modify Network
  • Нажмите Show Advanced Options
  • Установите Proxy на Manual
  • Установите для параметра Proxy hostname значение 10.0.3.2
  • Установите Port на 8888
  • Нажмите Save

И теперь ваша сеть будет дросселирована!

30
ответ дан VicVu 25 August 2018 в 00:25
поделиться

Я удивлен, что никто не упоминал об этом. Вы можете подключаться через Bluetooth и разделить их на десять + метры (или меньше с препятствиями). У вас действительно плохая связь. Нет микроволновой печи, нет лифта, не требуется программное обеспечение.

1
ответ дан yhm 25 August 2018 в 00:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: