Получение данных о сетевом подключении (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
В этой статье описано, как получать данные о возможности подключения и использовании сетевых подключений на устройствах, использующих классы из пространства имен Windows.Networking.Connectivity.
Необходимые условия
В следующих примерах, основанных на образце с информацией о сети, используется JavaScript. Общую справку по созданию приложения среды выполнения Windows на JavaScript см. в разделе Создание первого приложения среды выполнения Windows на JavaScript.
Что такое профиль подключений?
ConnectionProfile представляет собой установленное на устройстве единое сетевое подключение. С помощью данных, доступ к которым получен из ConnectionProfile, можно определить уровень текущего подключения, объем переданных данных или тип сетевого адаптера, используемого для поддержки подключения. Зарегистрировавшись для получения уведомлений об изменениях свойств объекта ConnectionProfile в подключенном приложении среды выполнения Windows, можно будет выбирать правильные способы адаптации логики поведения объекта к изменениям в сетевом окружении. Подробнее о регистрации для этих уведомлений: Как управлять событиями и изменениями доступности подключения.
Для более специализированных сценариев, таких как подключенные приложения для мобильных устройств, которые часто перемещаются и работают в сетях с лимитным тарифным планом, ConnectionProfile предоставляет данные о стоимости и тарифном плане, благодаря которым можно избежать непредвиденных затрат на услуги связи. Подробнее: Как управлять тарифными ограничениями в сети с лимитным тарифным планом.
Каждый ConnectionProfile предоставляет доступ к следующим данным о подключении:
Вид данных | Способ получения | Описание |
---|---|---|
Стоимость подключения |
ConnectionCost | Подробная информация о стоимости подключения, в том числе данные об ограничении объема передачи данных и о роуминге. |
Тип затрат |
NetworkCostType | Тип затрат, используемый в данный момент, на сетевое подключение. |
Состояние и использование тарифного плана |
DataPlanStatus, DataPlanUsage | Информация об использовании тарифного плана, связанного с данным подключением. |
Локальное использование |
NetworkUsage | Информация об использовании локального подключения. |
Сетевой адаптер |
NetworkAdapter | Сетевой адаптер, обеспечивающий возможность данного подключения. |
Свойства подключений беспроводных сетей и беспроводных глобальных сетей |
Предоставляются дополнительные сведения о профилях подключений беспроводных сетей и беспроводных глобальных сетей. |
Получение профилей подключения
Определим экземпляр класса NetworkInformation, определяющий методы, используемые вашим приложением для получения ConnectionProfile. Затем определим экземпляр NetworkCostType, определяющий возможные типы стоимости сети, связанные с ConnectionProfile.
var networkInfo = Windows.Networking.Connectivity.NetworkInformation;
var networkCostInfo = Windows.Networking.Connectivity.NetworkCostType;
Класс NetworkInformation определяет два метода для получения ConnectionProfile. Чтобы получить только профиль, связанный с подключением к Интернету, используйте метод getInternetConnectionProfile.
При вызове большинства асинхронных сетевых методов вы должны указать код для обработки исключений. Кроме того, у методов в пространстве имен Windows.Networking.Connectivity, получающих ConnectionProfile, могут быть исключения. Обработчик исключений может получить подробную информацию о причине исключения, чтобы разобраться в проблеме и принять необходимые меры. Дополнительную информацию см. в разделе об обработке исключений в сетевых приложениях.
function displayInternetConnectionProfileInfo() {
try {
// get the ConnectionProfile that is currently used to connect to the Internet
var internetProfile = networkInfo.getInternetConnectionProfile();
mySample.displayStatus(GetConnectionProfileInfo(internetProfile));
}
catch (e) {
mySample.displayError("Exception Caught: " + e + "\n\r");
}
}
Если необходимо получить профили для всех соединений (включая подключение к Интернету), используйте метод getConnectionProfiles.
function displayConnectionProfileList() {
var profileList = "";
try {
var ConnectionProfiles = networkInfo.getConnectionProfiles();
if (ConnectionProfiles.length != 0) {
for (var i = 0; i < ConnectionProfiles.length; i++) {
//Display Connection profile info for each profile
profileList += GetConnectionProfileInfo(ConnectionProfiles[i]);
profileList += "-----------------------------------------\n\r";
}
mySample.displayStatus(profileList);
}
else {
mySample.displayStatus("No profiles found");
}
}
catch (e) {
mySample.displayError("Exception Caught: " + e + "\n\r");
}
}
Доступ к данным из профиля подключения
Следующий пример кода вызывает методы ConnectionProfile, чтобы получить данные о состоянии сетевого подключения, стоимости, трафике.
function getConnectionProfileInfo(connectionProfile) {
if (connectionProfile == null) {
return "";
}
try {
var returnString = "ProfileName: " + connectionProfile.profileName + "\n\r";
switch (connectionProfile.getNetworkConnectivityLevel()) {
case networkConnectivityInfo.none:
returnString += "Connectivity Level: None\n\r";
break;
case networkConnectivityInfo.localAccess:
returnString += "Connectivity Level: Local Access\n\r";
break;
case networkConnectivityInfo.constrainedInternetAccess:
returnString += "Connectivity Level: Constrained Internet Access\n\r";
break;
case networkConnectivityInfo.internetAccess:
returnString += "Connectivity Level: Internet Access\n\r";
break;
}
//Display Connection cost info
returnString += "Connection Cost Information:\n\r";
returnString += "===============\n\r";
var connectionCost = connectionProfile.getConnectionCost();
returnString += "Cost Type: " + GetCostType(connectionCost.networkCostType) + "\n\r";
returnString += "Roaming: " + connectionCost.roaming + "\n\r";
returnString += "Over Datalimit: " + connectionCost.overDataLimit + "\n\r";
returnString += "Approaching Datalimit: " + connectionCost.approachingDataLimit + "\n\r";
//Display Dataplan status info
returnString += "Dataplan Status Information:\n\r";
returnString += "===============\n\r";
var dataPlanStatus = connectionProfile.getDataPlanStatus();
if (dataPlanStatus.dataPlanUsage != null) {
returnString += "Usage In Megabytes: " + dataPlanStatus.dataPlanUsage.megabytesUsed + "\n\r";
returnString += "Last Sync Time: " + dataPlanStatus.dataPlanUsage.lastSyncTime + "\n\r";
}
else {
returnString += "Dataplan Usage: " + "Not Defined" + "\n\r";
}
if (dataPlanStatus.InboundBitsPerSecond != null) {
returnString += "Inbound Bits Per Second: " + dataPlanStatus.InboundBitsPerSecond + "\n\r";
}
else {
returnString += "Inbound Bits Per Second: " + "Not Defined" + "\n\r";
}
if (dataPlanStatus.OutboundBitsPerSecond != null) {
returnString += "Outbound Bits Per Second: " + dataPlanStatus.OutboundBitsPerSecond + "\n\r";
}
else {
returnString += "Outbound Bits Per Second: " + "Not Defined" + "\n\r";
}
if (dataPlanStatus.dataLimitInMegabytes != null) {
returnString += "Data Limit In Megabytes: " + dataPlanStatus.dataLimitInMegabytes + "\n\r";
}
else {
returnString += "Data Limit In Megabytes: " + "Not Defined" + "\n\r";
}
if (dataPlanStatus.nextBillingCycle != null) {
returnString += "Next Billing Cycle: " + dataPlanStatus.nextBillingCycle + "\n\r";
}
else {
returnString += "Next Billing Cycle: " + "Not Defined" + "\n\r";
}
if (dataPlanStatus.maxDownloadFileSizeInMegabytes != null) {
returnString += "Maximum Download File Size in Megabytes: " + dataPlanStatus.maxDownloadFileSizeInMegabytes + "\n\r";
}
else {
returnString += "Maximum Download File Size in Megabytes: " + "Not Defined" + "\n\r";
}
returnString += "Cost Based Suggestions: " + CostBasedSuggestions(connectionCost) + "\n\r";
}
catch (e) {
mySample.displayError("Exception Caught: " + e + "\n\r");
}
return returnString;
}
Сводка
В этой статье мы рассмотрели получение профилей подключения и сведений о подключении, содержащихся в каждом профиле. Эти сведения необходимы для того, чтобы ваше приложение могло выбрать подходящие параметры и обеспечить надежное подключение.
Дополнительные руководства и рекомендации по использованию информации о подключении для управления реакцией на событие в приложении, подключенном к сети, см. в разделе Как управлять событиями и изменениями доступности подключения.
Связанные разделы
Прочие ссылки
Создание первого приложения среды выполнения Windows на JavaScript
Обработка исключений в сетевых приложениях
Как управлять событиями и изменениями доступности подключения
Как управлять тарифными ограничениями в сети с лимитным тарифным планом
Получение сведений о сетевом адаптере и расположении
Получение данных об использовании подключения за определенный период
Ссылки
Windows.Networking.Connectivity
Примеры