title author date CreateTime categories
win10 uwp 网络编程
lindexi
2018-2-13 17:23:3 +0800
2018-2-13 17:23:3 +0800
Win10 UWP

我们来弄简单协议

首先第一层是传输层,这一层是Head+Data

其中Head就是有传输的头,加上Data长度

Head=Head+length

length是Data长度

上面传输的头,Head=Head+length 中的第二个Head,包含
传输者id,当前传输是传输的消息最后一段还是中间,当前传输
是服务器第消息

传输的最后一段还是中间指的是在上一层,有很长的数据,被拆为多个Data发送,
这时就需要标注接下来几条消息要合并为一条

传输头Head=id+stx+count

count就是服务器随机给的序号,客户端接收到,就返回接收到+count,这样服务器就可以知道客户端收到,如果超过时间,那么服务器就重新发送

id、count都是16位int,我上面说的服务器其实就是发送的,客户端就是接收,不是说服务器协议

我们接收是byte那么如何从byte两个转换为int,其实简单,short才对,不过说16位那是我C艹

我们一个byte是高8位,一个是低8位

value = 256 * high + low;

(high << 8) | low

stx=stx+length stx和length是8位byte

stx=1是发送中间

stx=2是发送结束

stx=3是回复

length在stx=1 stx=2是表示消息顺序,如果接收到stx=1那么把消息放到缓存区,然后直到接收到stx=2才把消息合并,通知,这时需要按照length顺序组合,如果接收到的length不对,缺少,那么废掉信息。

我们开始接收就接收16+16+16+16位,然后使用length接收下面,这样就可以解决

技术很简单,其实我们需要做服务器,和客户端,一般我们可以在UWP做两个,这个参见http://www.wangchenran.com/uwp-streamsocket-chatroom-1.html

我们可以用传输数据,可以传输文本,这个我们需要传什么需要一个协议,这个是应用高层,前面说的是协议传输

带Header的WebRequest

HttpRequestMessage httpRequestMessage = new HttpRequestMessage(
HttpMethod.Post, new Uri("http://www.contoso.com"));
httpRequestMessage.Content = new HttpStringContent("hello, world");
httpRequestMessage.Headers.Append("X-My-Client","true"); myWebView.NavigateWithHttpRequestMessage(httpRequestMessage);
            var url = new Uri("http://www.baidu.com", UriKind.Absolute);
var httpClient = new System.Net.Http.HttpClient();
httpClient.DefaultRequestHeaders.Add("apikey", "123456");
var reponse = await httpClient.GetStreamAsync(url);
var streamReader = new StreamReader(reponse, Encoding.UTF8);
var jsonString = streamReader.ReadToEnd();
var jsonObject = JsonObject.Parse(jsonString);

获取Buffer

                Windows.Web.Http.HttpClient http = new Windows.Web.Http.HttpClient();
IBuffer buffer = await http.GetBufferAsync(uri);

参见:https://msdn.microsoft.com/zh-cn/library/windows/apps/windows.ui.xaml.controls.webview.navigatewithhttprequestmessage.aspx

HttpClient 使用 Cookie

参见:https://stackoverflow.com/questions/41599384/httpclient-cookie-issue

如果不想自己写,请看 https://github.com/chenrensong/WebSocket.UWP

https://github.com/rdavisau/sockets-for-pcl

2018-2-13-win10-uwp-网络编程的更多相关文章

  1. python学习(20) 网络编程

    原文链接:http://www.limerence2017.com/2018/01/02/python20/ python 网络编程和基本的C语言编程一样,效率不是很高,如果为了封装通信库建议采用C/ ...

  2. JAVA的网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  3. JAVA网络编程【转】出处不详

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  4. 【转】JAVA之网络编程

    转自:火之光 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者 ...

  5. JAVA的网络编程【转】

    JAVA的网络编程[转] Posted on 2009-12-03 18:04 火之光 阅读(93441) 评论(20) 编辑 收藏 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能, ...

  6. Java学习之网络编程实例

    转自:http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.html 多谢分享 网络编程 网络编程对于很多的初学者来说,都是很向往的一 ...

  7. 【转】JAVA 网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  8. Java进阶之网络编程

    网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...

  9. Linux网络编程学习路线

    转载自:https://blog.csdn.net/lianghe_work/article 一.网络应用层编程   1.Linux网络编程01——网络协议入门 2.Linux网络编程02——无连接和 ...

  10. java网络编程+通讯协议的理解

    参考: http://blog.csdn.net/sunyc1990/article/details/50773014 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很 ...

随机推荐

  1. 【学习总结】Python-3-风格各异的数值类型实例

    菜鸟教程-Python3-基本数据类型 可能是考点的各种形态的数值类型 int型:正数负数,八进制0开头,十六进制0x开头 float型:小数点的前后都可以没有数字,自动补全 complex型:虚部的 ...

  2. jackson 问题定位

    问题背景: 云计算Pass平台版本升级,导致引用的jackson的包直接由1.*升级为2.* .在版本1.*中对于字段名与实际json不符的直接忽略了,而在2.*中则会报错.诸如此类,有较大差异,需要 ...

  3. Python学习总结笔记

    # windows python -m http.server [<portNo>] # linux python -m SimpleHTTPServer [<portNo>] ...

  4. ContextLoaderListener vs DispatcherServlet

    In XML based Spring MVC configuration, you must have seen two declarations in web.xml file i.e. Cont ...

  5. JRE和JVM的区别

    JRE和JVM的区别       JRE(JavaRuntimeEnvironment,Java运行环境),也就是Java平台.所有的Java程序都要在JRE下才能运行.JDK的工具也是Java程序, ...

  6. delphi 监控文件系统

    elphi 监控文件系统 你是否想为你的Windows加上一双眼睛,察看使用者在机器上所做的各种操作(例如建立.删除文件:改变文件或目录名字)呢? 这里介绍一种利用Windows未公开函数实现这个功能 ...

  7. [CSP-S模拟测试60]题解

    回去要补一下命运石之门了…… A.嘟嘟噜 给定报数次数的约瑟夫,递推式为$ans=(ans+m)\% i$. 考虑优化,中间很多次$+m$后是不用取模的,这种情况就可以把加法变乘法了.问题在于如何找到 ...

  8. angularjs $index用来取顺序

    $index用来取顺序 null

  9. leetcode的一些贪心题目

    11-盛最多水的容器 思路:定义2个指针分别指向数组的两端,找出两边缘最小的那个,然后乘以两边缘的距离,然后向中间搜索,移动一次算出结果比较取最大的. class Solution { public: ...

  10. Apache2.2+mod_encoding解决URL中文编码问题

    我们经常在论坛上看到这样的求救贴: 为什么我看不了网站上中文文件名的文件?这时一定会有好心的大侠告诉说,到IE6的工具,Internet选项, 高级里,把"总是以UTF-8发送URL&quo ...