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(客户端和服务器)两个选项有没有勾上。
     
     
    这样再次运行应该就不会发生异常了
  • 相关阅读:
    自定义udf添加一列
    spark执行命令 监控执行命令
    R链接hive/oracle/mysql
    [Hive_6] Hive 的内置函数应用
    [Hive_add_6] Hive 实现 Word Count
    [Hive_add_5] Hive 的 join 操作
    【爬坑】远程连接 MySQL 失败
    [Hive_add_4] Hive 命令行客户端 Beeline 的使用
    [Hive_5] Hive 的 JDBC 编程
    [Hive_add_3] Hive 进行简单数据处理
  • 原文地址:https://www.cnblogs.com/masahiro/p/10126999.html
Copyright © 2011-2022 走看看