【问题标题】:DataReader HololensDataReader Hololens
【发布时间】:2018-01-22 08:03:53
【问题描述】:

我正在尝试在 Hololens 上创建一个 udp 客户端/服务器。我在这个项目背后的想法是在 iOS 应用程序和 Hololens 之间进行通信。这是我的代码:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

#if !UNITY_EDITOR
    using Windows.Networking;
    using Windows.Networking.Sockets;
    using Windows.Storage.Streams;
#endif

public class server : MonoBehaviour
{
    public Text monTexte;

#if !UNITY_EDITOR
        StreamSocket socket;
        StreamSocketListener listener;
        String port;
        String message;
#endif

    // Use this for initialization
    void Start()
    {
#if !UNITY_EDITOR
        listener = new StreamSocketListener();
        port = "12345";
        listener.ConnectionReceived += Listener_ConnectionReceived;
        listener.Control.KeepAlive = false;

        Listener_Start();
#endif
    }

#if !UNITY_EDITOR
    private async void Listener_Start()
    {
        Debug.Log("Listener started");
        try
        {
            await listener.BindServiceNameAsync(port);
        }
        catch (Exception e)
        {
            Debug.Log("Error: " + e.Message);
        }

        Debug.Log("Listening");
    }

    private async void Listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
    {
        Debug.Log("Connection received");

        try
        {
            while (true) {

                    using (var dw = new DataWriter(args.Socket.OutputStream))
                    {
                        dw.WriteString("salut");
                        await dw.StoreAsync();
                        dw.DetachStream();
                    }  

                    using (var dr = new DataReader(args.Socket.InputStream))
                    {
                        var receivedStrings = "";

                        while (dr.UnconsumedBufferLength > 0)
                        {
                            uint bytesToRead = dr.ReadUInt32();
                            receivedStrings += dr.ReadString(bytesToRead) + "\n";
                            Debug.Log(receivedStrings);
                            monTexte.text = receivedStrings;
                        }
                    }
            }
        }
        catch (Exception e)
        {
            Debug.Log("iPhone disconnected!!!!!!!! " + e);
        }

    }

#endif
}

我设法发送消息,现在我不知道为什么我从来没有收到来自客户端的消息... 我创建了一个 DataReader,但它似乎从不听。任何的想法 ?谢谢!

【问题讨论】:

    标签: c# udp datareader hololens stream-socket-client


    【解决方案1】:

    我找到了解决方法,这是我的完整代码:

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    #if !UNITY_EDITOR
        using Windows.Networking;
        using Windows.Networking.Sockets;
        using Windows.Storage.Streams;
    #endif
    
    public class server : MonoBehaviour
    {
        public Text monTexte;
        public String _input = "Waiting";
    
    #if !UNITY_EDITOR
            StreamSocket socket;
            StreamSocketListener listener;
            String port;
            String message;
    #endif
    
        // Use this for initialization
        void Start()
        {
    #if !UNITY_EDITOR
            listener = new StreamSocketListener();
            port = "12345";
            listener.ConnectionReceived += Listener_ConnectionReceived;
            listener.Control.KeepAlive = false;
    
            Listener_Start();
    #endif
        }
    
    #if !UNITY_EDITOR
        private async void Listener_Start()
        {
            Debug.Log("Listener started");
            try
            {
                await listener.BindServiceNameAsync(port);
            }
            catch (Exception e)
            {
                Debug.Log("Error: " + e.Message);
            }
    
            Debug.Log("Listening");
        }
    
        private async void Listener_ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args)
        {
            Debug.Log("Connection received");
    
            try
            {
                while (true) {
    
                        using (var dw = new DataWriter(args.Socket.OutputStream))
                        {
                            dw.WriteString("salut");
                            await dw.StoreAsync();
                            dw.DetachStream();
                        }  
    
                        using (var dr = new DataReader(args.Socket.InputStream))
                        {
                            dr.InputStreamOptions = InputStreamOptions.Partial;
                            await dr.LoadAsync(12);
                            var input = dr.ReadString(12);
                            Debug.Log("received: " + input);
                            _input = input;
    
                        }
                }
            }
            catch (Exception e)
            {
                Debug.Log("iPhone disconnected!!!!!!!! " + e);
            }
    
        }
    
    #endif
    
         void Update() {
            monTexte.text = _input;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-22
      • 1970-01-01
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多