当前位置:首页 > CN2资讯 > 正文内容

windows 连接nfs Windows 连接服务器

11小时前CN2资讯

在Windows8下的Windows App Store应用由于采用了不同于传统桌面应用的机制所以引进了一些新的机制,比如现在看到的StreamSocket就是用来替代以前的Socket的套接字连接对象。

那么在StreamSocket对象中如何与服务器建立连接呢?先看看下面的代码吧

StreamSocket _socket = new StreamSocket(); string hostIp="127.0.0.1";//需要连接的远程主机IP string port="6789";//远程主机的端口号 HostName hostName = new HostName(hostIp); try { //建立与服务区的连接 //该连接是由系统托管的,无法通过StreamSocket对象实例直接获取当前状态,如果在向实例中写入数据时发生异常则说明连接断开了 //由于ConnectAsync是一个异步方法,所以我们需要在前面加上await关键字来让线程等待链接完成后才继续执行。 await _socket.ConnectAsync(hostName, port); } catch (Exception exception) { //如果是未知异常则直接抛出 if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown) { throw; } } finally { }

这里关键的方法就是 _socket.ConnectAsync(hostName, port) ,用这句代码可以让StreamSocket实例向指定的地址发起一个长链接。

当需要关闭这个长连接时只需要调用 StreamSocket实例的Dispose()方法就行了,代码如下:

_socket.Dispose();

 

可是我做到这里的时候有一个问题,因为我需要将我的通信库是从老的Socket模型移植到新的StreamSocket模型中来,而在老的Socket模型中连接操作是同步执行的,而await关键字受限于只能在注册为async的异步方法中执行,这样就造成我的连接方法还没执行完成就继续执行接下来的发送方法。在这里我折腾了好久之后终于用线程锁的方式将连接转换成了同步方法,具体代码如下:

string _host=string.Empty; string _port=string.Empty; AutoResetEvent autore = new AutoResetEvent(false); public virtual void Connect(String host, string port) { this._host = host; this._port = port; //由于建立连接时需要收到握手信息,而握手信息只能在发起线程接收,所以这里我们另启一个线程来做链接操作。 Windows.System.Threading.ThreadPool.RunAsync(new Windows.System.Threading.WorkItemHandler(DoAsyncConnect)); //挂起当前线程 autore.WaitOne(); } //这是中间的委托方法,用来调用异步的连接方法 void DoAsyncConnect(object obj) { AsyncConnect(_host, _port); } public async virtual void AsyncConnect(string host, string port) { HostName hostName = new HostName(host); try { await _socket.ConnectAsync(hostName, port); } catch (Exception exception) { //如果是未知异常则直接抛出 if (SocketError.GetStatus(exception.HResult) == SocketErrorStatus.Unknown) { throw; } } finally { //链接执行完毕后继续执行线程 autore.Set(); } }

至此,StreamSocket与服务器的连接就已经建立完成。



    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/30047.html

    分享给朋友:

    “windows 连接nfs Windows 连接服务器” 的相关文章

    2023年最佳VPS服务商排名与推荐

    在数字化时代,VPS(虚拟专用服务器)成为了很多企业和开发者青睐的主机解决方案。简单来说,VPS是将一台物理服务器划分成多个虚拟服务器,每个虚拟服务器都能够独立运行它自己的操作系统和应用。这样的设计不仅提升了资源利用率,还为用户提供了更高的灵活性与控制权,尤其适合需要稳定性能的中小型企业和开发者。...

    Cloudflare 菲律宾节点:提升网络体验与速度的解决方案

    在当今数字化时代,每一个在线体验都至关重要。CloudFlare的出现,正是为了满足这一迫切的需求。作为全球知名的CDN(内容分发网络)服务提供商,CloudFlare不仅致力于加速网站的加载速度,也为用户提供安全防护服务。借助全球分布的节点,CloudFlare能够将用户请求快速而安全地送达目的地...

    全面解析UDP攻击:类型、影响及有效防御策略

    在当今网络环境中,UDP攻击是一个话题无法忽视的安全隐患。它是一种常见的网络攻击形式,通常会给目标服务器带来严重的资源消耗。为了更好地理解这一现象,我们不妨简单回顾一下UDP协议的特性,以及攻击者是如何利用这一协议实施攻击的。 UDP,即用户数据报协议(User Datagram Protocol)...

    腾讯云与Cloudflare的比较分析:助力企业数字化转型的最佳选择

    在数字化转型的浪潮下,越来越多的企业开始依赖云计算技术来推动业务发展。其中,腾讯云和Cloudflare作为行业的佼佼者,吸引了广泛的关注。腾讯云是腾讯集团倾力打造的云计算品牌,凭借强大的技术背景和丰富的产品线,逐渐成为全球知名的云计算服务商。它的基础设施覆盖全球五大洲,运营于58个可用区,能够为不...

    搬瓦工(BandwagonHOST)VPS服务器购买指南与套餐对比

    搬瓦工,大家熟悉的名字,实际上是BandwagonHOST的中文称呼。这家公司是加拿大IT7 Networks旗下的子公司,专注于提供VPS服务器主机服务,目标用户涵盖了全球多个国家和地区,包括美洲、欧洲和亚洲等地。对于那些需要稳定和高性能服务器的用户来说,搬瓦工绝对是一个值得考虑的选项。 说到搬瓦...

    日本节点的重要性与旅行体验优化指南

    日本节点的定义与重要性 在数字化飞速发展的今天,网络成为了沟通和信息流通的主要渠道。这里提到的“节点”,其实是指网络中数据传输的关键环节,可以理解为互联网的一个重要接点。每一个节点都承担着流量的传输与分发,确保数据能够迅速而高效地在全球范围内流动。想象一下,网络就像一张巨大的蜘蛛网,各个节点犹如网中...