HoloLens TCP Socket Нет соединения - PullRequest
0 голосов
/ 10 января 2019

Я уже несколько дней пытаюсь создать TCP-соединение от HoloLens к моей локальной машине. Я знаю, что существует множество решений, но я понятия не имею, почему я не могу подключиться к устройству. Может быть, кто-нибудь может мне помочь или посоветовать, что я делаю не так.

Вот мой код

using UnityEngine;
#if WINDOWS_UWP
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Windows.Networking;
using Windows.Networking.Sockets;
using Windows.Storage.Streams;
using Windows.Foundation;
#endif 

public class DataListener : MonoBehaviour
{
#if WINDOWS_UWP

  private StreamSocket _socket;
#endif

  private void Start()
  {
    SetupTcpConnection();
  }

  //HoloLens Code
  private void SetupTcpConnection()
  {
#if WINDOWS_UWP

    if (_socket != null)
      return;

    _socket = new StreamSocket();

    var hostName = new HostName("192.168.8.102");
    var socketConnectionAwaiter = _socket.ConnectAsync(hostName, "11000");
    var handler = new                     AsyncActionCompletedHandler(SocketConnectionCompleted);
socketConnectionAwaiter.Completed = handler;
#endif

  }
#if WINDOWS_UWP

  void SocketConnectionCompleted(IAsyncAction action, AsyncStatus status)
  {
    if (status != AsyncStatus.Completed)
    {
      _socket.Dispose();
      _socket = null;
      return;
    }

    // Read the data 
    using (var reader = new     StreamReader(_socket.InputStream.AsStreamForRead()))
    {
      var data = reader.ReadToEnd();

      //then read data

    }
  }
#endif

}

C # Код заявки:

public static void StartClient3()
{
    var listener = new
    TcpListener(IPAddress.Any, 11000);
    var connectionHandler = new ConnectionHandler();

    var workerThread =
        new Thread(connectionHandler.HandleConnections);
    workerThread.Start(listener);

    while (!Console.KeyAvailable) { }

    Console.WriteLine("Shutting down");
    listener.Stop();
    workerThread.Abort();
}

public class ConnectionHandler
{
    TcpListener _listener;

    public void HandleConnections(object dataToPass)
    {

        _listener = dataToPass as TcpListener;
        if (_listener == null)
            return;

        _listener.Start();

        Console.WriteLine("We are waiting for a connection");
        while (true)
        {
            var client = _listener.AcceptTcpClient();

            Console.WriteLine("We are connected");

            var dataToSend = "SampleString";
            using (var writer = new StreamWriter(client.GetStream()))
            {
                writer.Write(dataToSend);
                writer.Flush();
            }
            client.Close();
        }
    }
}

Я получаю IP (192.168.8.102) с моей локальной машины от ipconfig, так что это должен быть правильный. Я не могу просто подключиться к HoloLens и не знаю почему.

Я также проверил настройки в Unity, такие как InternetClientServer, PrivateNetworkClientServer, InternetClient.

Есть что-нибудь, что я забыл. Буду очень признателен за вашу помощь!

Pat.

...