HoloLens2与Unity的Socket通信踩坑日记

最近想让Hololens中获取电脑中更新的数据,打算使用套接字的方式进行通信,明明在unity中模拟测试可以进行正常通信,但是将软件部署到HoloLens上通信总是失败,找了很久的原因,找了很久的原因,终于能够正常通信了,下面将一些踩坑的点放到这里,供诸位开发者们参考

1、关闭Windows专用网络的防火墙

2、HoloLens上不支持同步通信的代码

3、打开如上的几个网络通信的选项

4、 Windows Defender中高级设置中心设置一下项目编辑器的入站规则,允许其在网络上进行通信,很重要的坑

如果上述这些方面都调试好,部署到HoloLens上应该能正常运行 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity中实现Socket通信需要使用C#中的Socket类。以下是一个简单的示例代码: ```csharp using System; using System.Net; using System.Net.Sockets; using System.Text; using UnityEngine; public class SocketClient : MonoBehaviour { private Socket clientSocket; private byte[] receiveBuffer = new byte[1024]; public void Connect(string ipAddress, int port) { clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); clientSocket.BeginConnect(new IPEndPoint(IPAddress.Parse(ipAddress), port), ConnectCallback, null); } private void ConnectCallback(IAsyncResult ar) { clientSocket.EndConnect(ar); Debug.Log("Connected to server."); StartReceiving(); } private void StartReceiving() { clientSocket.BeginReceive(receiveBuffer, 0, receiveBuffer.Length, SocketFlags.None, ReceiveCallback, null); } private void ReceiveCallback(IAsyncResult ar) { int receivedBytes = clientSocket.EndReceive(ar); if (receivedBytes > 0) { string receivedData = Encoding.ASCII.GetString(receiveBuffer, 0, receivedBytes); Debug.Log("Received data: " + receivedData); } StartReceiving(); } public void Send(string data) { byte[] buffer = Encoding.ASCII.GetBytes(data); clientSocket.BeginSend(buffer, 0, buffer.Length, SocketFlags.None, SendCallback, null); } private void SendCallback(IAsyncResult ar) { clientSocket.EndSend(ar); } private void OnDestroy() { clientSocket.Shutdown(SocketShutdown.Both); clientSocket.Close(); } } ``` 通过调用 Connect 方法来连接服务器,通过 Send 方法来发送数据,通过 ReceiveCallback 方法来接收数据。注意,在 OnDestroy 方法中需要关闭和销毁Socket对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值