zoukankan      html  css  js  c++  java
  • WP8.1通过StreamSocket连接C++服务器

    注:当服务端和手机模拟器运行在一台机器时,会有奇怪错误。将服务端放在其它机器上更改客户端连接地址,运行正常。或者直接用本机modern调试也可以。
    实例化一个对象

    StreamSocket clientSocket = new StreamSocket();

    建立连接

    
            async void connect()
            {
                try
                {
                    HostName serverHost = new HostName("127.0.0.1");  //设置服务器IP
                    await clientSocket.ConnectAsync(serverHost, 5000);  //设置服务器端口号
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                    clientSocket.Dispose();
                    clientSocket = null;
                }
            }

    接收和发送数据
    由于Socket通信从本质上说是数据流的传输,即byte类型,StreamSocket使用DataReader类和DataWriter类来接收和发送数据流,两个类封装了不少实用的方法,但归根结底是对byte类型数据读取和发送的封装。

            DataReader reader = new DataReader(clientSocket.InputStream); //实例化reader对象,并以StreamSocket的输入流为reader的来源
            reader.InputStreamOptions = InputStreamOptions.Partial;  //采用异步方式
            await reader.LoadAsync(1024);  //获取一定大小的数据流
            string response = reader.ReadString(reader.UnconsumedBufferLength);  //获取字符串,指定为reader的未读取缓冲区的长度
            DataWriter writer = new DataWriter(clientSocket.OutputStream);  //实例化writer对象,以StreamSocket的输出流作为writer的方向
            string content = "ABCDEFGH";  //发送一字符串
            byte[] data = Encoding.UTF8.GetBytes(content);  //将字符串转换为字节类型,完全可以不用转换
            writer.WriteBytes(data);  //写入字节流,当然可以使用WriteString直接写入字符串
            await writer.StoreAsync();  //异步发送数据
            writer.DetachStream();  //分离
            writer.Dispose();  //结束writer

    中断连接

            clientSocket.Dispose();
            clientSocket = null;

    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    指针类型
    集合类型
    VMware打开虚拟机没反应的解决方案(全面汇总)
    redis主从|哨兵|集群模式
    MYSQL一次千万级连表查询优化
    StackExchange.Redis通用封装类分享
    Redis-五种数据类型解析
    Redis并发问题
    C#委托和事件
    Invoke 和 BeginInvoke 的区别
  • 原文地址:https://www.cnblogs.com/ggzone/p/4786421.html
Copyright © 2011-2022 走看看