Windows 8 Store Apps学习(60) 通信: 获取网络信息, 序列化和反序列化

介绍

重新想象 Windows 8 Store Apps 之 通信

获取网络信息

序列化 - json

序列化 - xml

序列化 - rss atom

示例

1、演示如何获取网络的相关信息

Communication/NetworkInfo.xaml.cs

/*
 * 演示如何获取网络的相关信息
 */

using System;
using System.Collections.Generic;
using Windows.Networking.Connectivity;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using System.Linq;

namespace XamlDemo.Communication
{
    public sealed partial class NetworkInfo : Page
    {
        public NetworkInfo()
        {
            this.InitializeComponent();
        }

        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            /*
             * NetworkInformation - 用于对网络信息的访问
             */

            // 获取当前用于 Internet 连接的 ConnectionProfile 对象
            ConnectionProfile connectionProfile = NetworkInformation.GetInternetConnectionProfile();

            if (connectionProfile == null)
                return;

            // 此连接配置的名称
            lblMsg.Text = "ProfileName: " + connectionProfile.ProfileName;
            lblMsg.Text += Environment.NewLine;

            // 此连接的网络连接级别(Windows.Networking.Connectivity.NetworkConnectivityLevel 枚举)
            //     None - 无连接
            //     LocalAccess - 仅允许访问本地网络
            //     ConstrainedInternetAccess - 受限的 internet 访问
            //     InternetAccess - 本地和 internet 访问
            lblMsg.Text += "NetworkConnectivityLevel: " + connectionProfile.GetNetworkConnectivityLevel();
            lblMsg.Text += Environment.NewLine;

            // 网络状态发生变化时所触发的事件
            NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;

            NetworkAdapter networkAdapter = connectionProfile.NetworkAdapter;
            if (networkAdapter != null)
            {
                lblMsg.Text += "NetworkAdapterId: " + networkAdapter.NetworkAdapterId; // 网络适配器 ID
                lblMsg.Text += Environment.NewLine;
                lblMsg.Text += "InboundMaxBitsPerSecond: " + networkAdapter.InboundMaxBitsPerSecond; // 最大入站数据传输速率(单位:bit/s)
                lblMsg.Text += Environment.NewLine;
                lblMsg.Text += "OutboundMaxBitsPerSecond: " + networkAdapter.OutboundMaxBitsPerSecond; // 最大出站数据传输速率(单位:bit/s)
                lblMsg.Text += Environment.NewLine;
                lblMsg.Text += "NetworkTypes: " + networkAdapter.NetworkItem.GetNetworkTypes(); // 网络类型
                lblMsg.Text += Environment.NewLine;
            }

            lblMsg.Text += Environment.NewLine;

            // 获取所有可用连接
            IReadOnlyList<ConnectionProfile> connectionProfiles = NetworkInformation.GetConnectionProfiles();
            foreach (ConnectionProfile cp in connectionProfiles)
            {
                lblMsg.Text += "ProfileName: " + cp.ProfileName;
                lblMsg.Text += Environment.NewLine;

                // 获取此连接的指定时间段内的本地数据的使用情况
                DataUsage dataUsage = cp.GetLocalUsage(DateTime.Now.AddHours(-1), DateTime.Now);

                lblMsg.Text += "BytesSent: " + dataUsage.BytesSent; // 已发送的字节数
                lblMsg.Text += Environment.NewLine;
                lblMsg.Text += "BytesReceived: " + dataUsage.BytesReceived; // 已收到的字节数
                lblMsg.Text += Environment.NewLine;
            }

            // 以下是一些不常用的东西
            ConnectionCost connectionCost = connectionProfile.GetConnectionCost();
            DataPlanStatus dataPlanStatus = connectionProfile.GetDataPlanStatus();
            NetworkSecuritySettings networkSecuritySettings = connectionProfile.NetworkSecuritySettings;
            IReadOnlyList<LanIdentifier> lanIdentifiers = NetworkInformation.GetLanIdentifiers();
        }

        void NetworkInformation_NetworkStatusChanged(object sender)
        {

        }
    }
}

用于演示序列化和反序列化的实体类

Communication/Serializer/Product.cs

/*
 * 用于演示序列化和反序列化的实体类
 *
 * 通过 DataContractJsonSerializer 或 DataContractSerializer 做序列化和反序列化时

,其支持 DataContract, DataMember, KnownType
 * 当然如果都不声明 DataContract, DataMember 也没问题
 */

using System;
using System.Collections.Generic;
using System.Runtime.Serialization;

namespace XamlDemo.Communication.Serializer
{
    [DataContract(Name="product")]
    public class Product
    {
        [DataMember(Name = "productId", IsRequired = true, Order = 1)]
        public int ProductId { get; set; }

        [DataMember(Name = "name", IsRequired = true, Order = 2)]
        public string Name { get; set; }

        public decimal Price { get; set; }

        [DataMember(Name = "createTime", IsRequired = true, Order = 3)]
        public DateTime CreateTime { get; set; }

        public static List<Product> GetProducts()
        {
            List<Product> products = new List<Product>();
            for (int i = 0; i < 5; i++)
            {
                products.Add(new Product
                {
                    ProductId = i,
                    Name = "name: " + i.ToString().PadLeft(4, '0'),
                    Price = i * 100,
                    CreateTime = DateTime.Now.AddDays(-i)
                });
            }

            return products;
        }
    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索网络
, text
, using
, environment
, public
cp通信
,以便于您获取更多的相关知识。

时间: 2024-11-03 10:59:24

Windows 8 Store Apps学习(60) 通信: 获取网络信息, 序列化和反序列化的相关文章

重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化

原文:重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 [源码下载] 重新想象 Windows 8 Store Apps (60) - 通信: 获取网络信息, 序列化和反序列化 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 通信 获取网络信息 序列化 - json 序列化 - xml 序列化 - rss atom 示例1.演示如何获取网络的相关信息Communication/NetworkInfo.xa

Windows 8 Store Apps学习(49) 输入: 获取输入设备信息

输入: 获取输入设备信息, 虚拟键盘, Tab 导航, Pointer, Tap, Drag, Drop 介绍 重新想象 Windows 8 Store Apps 之 输入 输入设备的相关信息 SIP(Soft Input Panel)的应用 Tab 键导航 Pointer - 指针,鼠标 Tap - 触摸 Drag 和 Drop 示例 1.演示如何获取输入设备的相关信息 Input/InputDeviceInfo.xaml <Page x:Class="XamlDemo.Input.In

Windows 8 Store Apps学习(63) 通信: WebSocket

介绍 重新想象 Windows 8 Store Apps 之 通信 Socket - 与 WebSocket 服务端做 Text 通信 Socket - 与 WebSocket 服务端做 Stream(Binary) 通信 示例 WebSocket 的服务端 WebServer/WebSocketServer.ashx.cs /* * WebSocket 协议的服务端 * * 需要在 iis 启用 WebSocket 协议:控制面板 -> 程序和功能 -> 启用或关闭 Windows 功能 -

Windows 8 Store Apps学习(62) 通信: Socket TCP, Socket UDP

介绍 重新想象 Windows 8 Store Apps 之 通信 Socket - Tcp Demo Socket - 实现一个自定义的 http server Socket - Udp Demo 示例 1.演示 socket tcp 的应用(本例既做服务端又做客户端) Communication/Socket/TcpDemo.xaml <Page x:Class="XamlDemo.Communication.Socket.TcpDemo" xmlns="http:

Windows 8 Store Apps学习(61) 通信: http, oauth

介绍 重新想象 Windows 8 Store Apps 之 通信 HttpClient 概述 http get string http get stream http post string http post stream OAuth 2.0 验证的客户端 示例 用于演示 http 通信的服务端 WebServer/HttpDemo.aspx.cs /* * 用于响应 http 请求 */ using System; using System.IO; using System.Threadi

Windows 8 Store Apps学习(58) 微软账号

介绍 重新想象 Windows 8 Store Apps 之 微软账号 获取微软账号的用户相关的信息 获取或设置微软账号的图片和视频 微软账号的验证,和相关信息的获取   示例 1.演示如何获取微软账号的用户相关的信息 Account/AccountInfo.xaml <Page x:Class="XamlDemo.Account.AccountInfo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/prese

Windows 8 Store Apps学习(56)系统UI Scale, Snap,Orientation,High Contrast

介绍 重新想象 Windows 8 Store Apps 之 系统 UI 获取系统的 UI 相关的设置 信息 屏幕方向 Snap 为 snap 操作和屏幕方向的改变增加动画效果 缩放至不同屏幕 高对比度 示例 1.演示如何获取系统的 UI 相关的设置 信息 UI/UISettingsInfo.xaml.cs /* * 演示如何获取系统的 UI 相关的设置信息 */ using System; using Windows.UI.ViewManagement; using Windows.UI.Xa

Windows 8 Store Apps学习(41) 打印

介绍 重新想象 Windows 8 Store Apps 之 打印 示例 1.需要打印的文档 Print/PrintPage.xaml <Page x:Class="XamlDemo.Print.PrintPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xam

Windows 8 Store Apps学习(68) 后台任务:控制通道(ControlChannel)

介绍 重新想象 Windows 8 Store Apps 之 后台任务 控制通道(ControlChannel) 示例 1.客户端与服务端做 ControlChannel 通信的关键代码 ControlChannelHelper/AppContext.cs /* * 本例通过全局静态变量来实现 app 与 task 的信息共享,以便后台任务可以获取到 app 中的相关信息 * * 注: * 也可以通过 Windows.ApplicationModel.Core.CoreApplication.P