MR开发高级教程
课时介绍
大家好,我是山谷大叔。本节我们将开始讲解客户端的网络模块。我们的客户端同样使用Socket EPU进行与服务器的连接和消息接收。现在我们看一下客户端Socket Async Event AX。客户端使用EPU来连接服务器,接收和发送消息,主要调用的EPU的API分别是Connect Async、Receive Async和Send Async。在与服务器进行EPU接收和发送时,我们编写服务器时的User Token里面处理接收和发送的逻辑以及调用的API是一样的,所以这一块我们可以复用,只需要处理EPU连接即可,剩下的是处理EPU接收消息这一块。我们在这里建立一个文件夹,命名为Client,不需要基于ScreenMirror,删除这些内容。我们定义一个Circuit Client代写字,然后编写一个方法StartConnectServer,用于实现客户端连接服务器。连接服务器时,需要传入服务器的IP地址和端口号,我们需要将它们实例化成一个IP Endpoint,并且使用IP Address对IP进行解析,然后实例化Socket。我们使用传入的Endpoint和DreadFamily来实例Socket,类型为Stream,协议为DCP。我们需要在Circuit EVE对象中实例化EtherToken和EtherRemoteEndpoint,并赋值为Endpoint和EtherCompleted,然后添加Connect Completed事件,即连接完成时触发。在连接之后,我们需要使用一个线程同步锁,并在连接之后阻塞线程,等待连接结果。我们使用AutoResetEvent Connect Reset来实例化一下,初始值为False。当我们启动EVE连接时,调用WriteWire方法,可以输入等待时间,我们可以设置默认等待时间为2000毫秒。如果连接完成,这个时候它开始连接。如果连接完成,可能只需要100毫秒,那我们需要将它释放掉,所以在连接完成之后,需要Reset。我们需要判断一下它是否连接成功,编写一个方法直接返回Port Connected,来判断是否连接成功。只需要判断这个Cylinder,即这个Socket的Connected属性是否为True即可。如果是True,说明连接成功,返回之前,需要确保这个Cylinder不为空,并且它是连接的。连接完成之后,我们开始异步接收服务器的消息,需要定义一个异步接收对象,然后指引一下它的服务器地址,这个地址就等于我们上面定义的
课程介绍
MR开发高级教程,功能包括通用TCP网络模块,资源动态更新,MRTK,HoloLens交互共享、AR设备校准共享、第三视角、HoloLens第一视角视频编解码等~
推荐课程
信息系统项目管理师自考笔记
李明 · 513人在学
python从0到1:期货量化交易系统(CTP实战,高频及合成K线数据
王先生 · 20608人在学
手把手搭建Java超市管理系统【附源码】(毕设)
汤小洋 · 4050人在学
Java毕设springboot外卖点餐系统 毕业设计毕设源码 使用教
黄菊华 · 732人在学
基于SSM酒店管理系统(毕设)
小尼老师 · 786人在学
java项目实战之购物商城(java毕业设计)
Long · 5073人在学
手把手搭建Java求职招聘系统【附源码】(毕设)
汤小洋 · 1459人在学
Python Django 深度学习 小程序
钟翔 · 2235人在学
城管局门前三包管理系统+微信小程序(vue+springboot)
赖国荣 · 497人在学
Vue+Uni-app(uniapp)入门与实战+赠送仿美团点餐小程序
李杰 · 3843人在学