zoukankan      html  css  js  c++  java
  • Windows8 Metro界面下的StreamSocketListener对象做监听端口

    StreamSocketListener 是一个很方便的服务器监听对象,利用它我们可以很简单的实现对服务器端口的监听。使用StreamSocketListener对象进行监听需要以下几步:

    1. 实例化一个StreamSocketListener对象
    2. 注册实例收到连接时的事件
    3. 开启监听指定端口
     
    代码如下:
    StreamSocketListener listener = new StreamSocketListener();
    listener.ConnectionReceived += listener_ConnectionReceived;
    await listener.BindServiceNameAsync("6060");
    连接时的事件代码如下:
    private async void listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
    {
        DataReader reader = new DataReader(args.Socket.InputStream);
        try
        {
            while (true)
            {
                //这里由于我的发包规则会在包的最前面描述包的长度,所以我先把长度读取出来
                uint stringLength = reader.ReadUInt32();
               //然后获取真正未读的长度
               uint actualStringLength = await reader.LoadAsync(stringLength);
               if (stringLength != actualStringLength)
               {
                   //如果我描述的长度和实际读取的长度不相符说明包数据不完整,可能是对方提早关闭了连接,停止监听
                   return;
               }
               //然后读取数据
               string data = reader.ReadString(actualStringLength);
               //这里我把数据加到了另外一个控件里面用来显示
               lstMessage.Items.Add(data);
               }
           }
        catch (Exception exception)
        {
           //这里可以获取各种异常的状态
           if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown)
           {
    
           }
        }
    }
     
     
    这样就完成了,下面还有一个问题需要注意。
    如果在实例化 StreamSocketListener 时就发生 拒绝访问 异常那么检查一下 应用程序清单(Package.appxmanifest)中功能选项卡下的Internet(客户端) 和Internet(客户端和服务器)两个选项有没有勾上。
     
     
    这样再次运行应该就不会发生异常了
  • 相关阅读:
    WPF 之Converter
    silverlight中 ComboBox绑定数据库,并获取当前选定值
    ComboBox联动 (AJAX BS实现)
    [推荐]Silverlight 2 开发者海报
    非常精彩的Silverlight 2控件样式
    一步一步学Silverlight 2系列文章
    POSIX 线程详解(经典必看)
    嵌入式 vlc从接收到数据流到播放视频的过程分析(经典)
    OpenGL ES教程系列(经典合集)
    Audio Queue Services Programming Guide(音频队列服务编程指南)
  • 原文地址:https://www.cnblogs.com/masahiro/p/10126999.html
Copyright © 2011-2022 走看看