C# TCPListener和StreamSocket

C# TCPListener和StreamSocket,c#,uwp,tcpclient,tcplistener,hololens,C#,Uwp,Tcpclient,Tcplistener,Hololens,我有个奇怪的问题。我正在尝试从本地PC到远程hololens建立TCP连接。在PC机上,我使用标准的C#API(TCPClient、TCPListener),在Hololens上,我被迫使用UWP工具(StreamSocket、StreamSocketListener) 我已经测试了以下配置: StreamSocket(本地PC)StreamSocketListener(全息镜头):正在工作 StreamSocketListener(本地PC)StreamSocket(全息镜头):正在工作 TC

我有个奇怪的问题。我正在尝试从本地PC到远程hololens建立TCP连接。在PC机上,我使用标准的C#API(TCPClient、TCPListener),在Hololens上,我被迫使用UWP工具(StreamSocket、StreamSocketListener)

我已经测试了以下配置:

StreamSocket(本地PC)StreamSocketListener(全息镜头):正在工作

StreamSocketListener(本地PC)StreamSocket(全息镜头):正在工作

TCPC客户端(本地PC)StreamSocketListener(Hololens):正在工作

TCPClient(本地PC)TCPListener(也是本地客户端):正在工作

但是

TCPListener(本地PC)StreamSocket(全息镜头):不工作

更让人困惑

TCPListener(本地PC)StreamSocket(作为本地PC上的UWP应用程序):工作正常!(即使默认情况下本地主机应该被UWP API阻止)


这是明确禁止的吗?有办法解决吗?不确定我是否应该显示代码,它是典型的、最小的,并且是从文档引用复制粘贴的

因此,出于某种原因,我的Hololens无法启动与PC的联系,但另一种方式可以工作(Hololens上的StreamSocketListener,PC上的TCPClient)

这里有一个相关的问题

但我不是在本地主机上测试。我正在全息镜头和个人电脑之间进行测试

以下是TCPListener的用法:

var connectionListener = new TcpListener(localAddress, port);
connectionListener.Start();
connectionListener.BeginAcceptTcpClient(AcceptTCPClient, connectionListener);

//somewhere else
private void AcceptTCPClient(IAsyncResult result)
        {

            var client = connectionListener.EndAcceptTcpClient(result);

            OnConnectEvent(client); //custom callback, registered somewhere outside

            connectionListener.BeginAcceptTcpClient(AcceptTCPClient, connectionListener); //accept next client
        }
可能还有相关的StreamSocket用法:

//this all happens in a separate thread.
var networkSocket = new StreamSocket();

 while (!IsConnected)
            {
                try
                {
                    await networkSocket.ConnectAsync(new HostName("192.168.0.101"), "7777");
                    //do stuff with socket here
                }
                catch (Exception e)
                {
                    //errorhandling here
                }
            }

我应该注意,对于每个本地网络地址,我都有单独的tcplistener

通过将
TcpListener
配置为侦听任何IP地址,解决了相同的问题

IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, ConnectionPort);
networkListener = new TcpListener (ipEndPoint);
networkListener.Start (10);

你链接的答案中的“注意,即使是本地网络访问也默认关闭”是什么意思?我猜你的全息镜头在本地网络中。TCP客户端/侦听器不会自动打开流。你在代码中的TCPListener中打开了一个流吗?“典型的、最小的、从文档引用复制粘贴的。”-但是,即使我们偶然发现了相同的文档引用,我们把你拥有的相同程序放在一起的几率有多大?@Evk哦,可能是这样的,我不知何故将其误读为localhost。没有完全解释为什么与全息镜头监听的连接起作用。@Evk nevermind,我已经在清单中拥有了所需的权限。