2017-02-02 49 views
1

我正在尝试为我的Hololens创建客户端应用程序。这里是我的代码客户端应用程序Hololens

using UnityEngine; 
using System.Collections; 
using System; 
using System.IO; 
using System.Net.Sockets; 



public class networkSocket : MonoBehaviour 
{ 
    public String host = "127.0.0.1"; 
    public Int32 port = 8030; 

    internal Boolean socket_ready = false; 
    internal String input_buffer = ""; 
    TcpClient tcp_socket; 
    NetworkStream net_stream; 

    StreamWriter socket_writer; 
    StreamReader socket_reader; 



    void Update() 
    { 
     string received_data = readSocket(); 
     string key_stroke = Input.inputString; 

     // Collects keystrokes into a buffer 
     if (key_stroke != ""){ 
      input_buffer += key_stroke; 

      if (key_stroke == "\n"){ 
       // Send the buffer, clean it 
       Debug.Log("Sending: " + input_buffer); 
       writeSocket(input_buffer); 
       input_buffer = ""; 
      } 

     } 


     if (received_data != "") 
     { 
      // Do something with the received data, 
      // print it in the log for now 
      Debug.Log(received_data); 
     } 
    } 


    void Awake() 
    { 
     setupSocket(); 
    } 

    void OnApplicationQuit() 
    { 
     closeSocket(); 
    } 

    public void setupSocket() 
    { 
     try 
     { 
      tcp_socket = new TcpClient(host, port); 

      net_stream = tcp_socket.GetStream(); 
      socket_writer = new StreamWriter(net_stream); 
      socket_reader = new StreamReader(net_stream); 

      socket_ready = true; 
     } 
     catch (Exception e) 
     { 
      // Something went wrong 
      Debug.Log("Socket error: " + e); 
     } 
    } 

    public void writeSocket(string line) 
    { 
     if (!socket_ready) 
      return; 

     line = line + "\r\n"; 
     socket_writer.Write(line); 
     socket_writer.Flush(); 
    } 

    public String readSocket() 
    { 
     if (!socket_ready) 
      return ""; 

     if (net_stream.DataAvailable) 
      return socket_reader.ReadLine(); 

     return ""; 
    } 

    public void closeSocket() 
    { 
     if (!socket_ready) 
      return; 

     socket_writer.Close(); 
     socket_reader.Close(); 
     tcp_socket.Close(); 
     socket_ready = false; 
    } 

} 

不过,我收到这样的错误:类型或命名空间名称“的TcpClient”无法找到与同为“的NetworkStream”

我想,主要的问题是Hololens没有按由于UWP支持这些库。 如果有人已经试图做这样的事情? 在此先感谢!

+0

你看过Unity Networking吗?如果你的客户可以支持它,我听说人们在HoloLens上有很好的结果。 https://unity3d.com/learn/tutorials/topics/multiplayer-networking –

+0

谢谢。我会检查这一点。这个话题很奇怪。没有文档,没有例子,没有主题......奇怪的... – Silvering

回答

0

我们在项目中遇到同样的问题。我们通过评论代码解决了这个问题,然后在Unity中构建。在将它部署到HoloLens之前,我们对代码进行了分解。问题是Unity不使用.net。