Metro开发中的Socket支持(C#)
来源:互联网 发布:python 文章编辑器 编辑:程序博客网 时间:2024/05/04 21:39
最近在尝试Metro应用开发,作为本系列文章的开篇,简要介绍一下WinRT中对Socket的支持,废话不多说了,以下代码段声明了一个StreamStocket实例连接谷歌主页:
//声明并初始化一个HostNameHostName hostName;try{ hostName = new HostName("www.google.com");}catch (ArgumentException){ NotifyUser("Error: Invalid host name."); return;}//初始化一个StreamSocket实例用于连接网络StreamSocket socket = new StreamSocket();try{ // 连接服务器 await socket.ConnectAsync(hostName, "http"); //或者await socket.ConnectAsync(hostName, "8003");
//此方法有几个重载,可以选择是否使用Ssl等 NotifyUser("Connected");}catch (Exception exception){ if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown) { throw; } NotifyUser("Connect failed with error: " + exception.Message);}
其中用到的通知方法:
protected async void NotifyUser(String msg){ MessageDialog dialg = new MessageDialog(msg, "测试结果"); await dialg.ShowAsync();}
经过以上操作,相信已经顺利连接上需要操作的各种服务器了,接下来发送请求:
//声明并初始化向socket连接写数据的DataWriter对象DataWriter writer = new DataWriter(socket.OutputStream);String stringToSend = "HelloStocket";writer.WriteUInt32(writer.MeasureString(stringToSend));writer.WriteString(stringToSend);// 向网络发送数据try{ await writer.StoreAsync();}catch (Exception exception){ if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown) { throw; } NotifyUser("Send failed with error: " + exception.Message);}
发送请求后就可以开始尝试读取从服务器返回的数据了,以下是简单示例:
DataReader reader = new DataReader(Socket.InputStream);uint sizeFieldCount = await reader.LoadAsync(sizeof(uint));if (sizeFieldCount != sizeof(uint)){ return;}// 读取字符串uint stringLength = reader.ReadUInt32();uint actualStringLength = await reader.LoadAsync(stringLength);if (stringLength != actualStringLength){ return;}String result=reader.ReadString(actualStringLength);NotifyUser("Receive data: " + result);
经过以上步骤,我们完成了一次简单的从谷歌服务器获取网页数据的过程。当然,在实际项目使用中肯定不会这么简单,这里面未考虑和刻意忽略的细节问题非常多,此篇文章只是介绍了一下基本的使用方法,仅此而已。
- Metro开发中的Socket支持(C#)
- metro开发问题记录二:metro获取设备坐标方法(c++)
- C#Socket 文件传输,支持断点续传
- C#Socket 文件传输,支持断点续传
- C#Socket 文件传输,支持断点续传
- window8 metro应用Winjs开发中的输入框聚焦问题
- Linux c 开发 - Socket
- windows C开发Socket
- Windows8 Metro开发 (01) : Metro应用程序生命周期
- metro开发资料整理~
- Windows8 Metro开发 -- 总览
- java中的网络支持-socket编程
- linux c socket之通用socket,支持ipv4和ipv6
- .NET Socket开发中的异步Socket
- 关于metro app 中的chart
- win8应用开发之一:创建一个使用 C#/VB 和 XAML 的 Metro 风格应用
- 准备开发Metro Style 应用
- Metro
- va_list va_start() va_end()
- xuexi
- vim中执行shell命令,有以下几种形式
- ok6410开发板用nfs启动文件系统
- 腾讯面试
- Metro开发中的Socket支持(C#)
- hdu1513
- string类中关于字串替换的实现(find后再replace的方法)
- 黑马程序员 ——Java的类加载器
- 男人需要责任(弱水三千,只取一瓢饮)
- iframe(frameset)跨域session丢失问题终极解决方案
- tcpreplay回放捕获的数据包
- another
- undefined reference to 'pthread_create'问题解决