Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行端口转发时没有结果_C#_Networking_Unity3d_Client Server_Portforwarding - Fatal编程技术网

C# 执行端口转发时没有结果

C# 执行端口转发时没有结果,c#,networking,unity3d,client-server,portforwarding,C#,Networking,Unity3d,Client Server,Portforwarding,我目前正在使用UNet客户机-服务器系统,以便进行联网,并能够搜索LAN以外端口上的所有设备,如前一个问题所述。在四处搜索之后,我从网站上找到了一个合适的C#端口转发库,并一直按照说明进行操作,以便能够发现端口上的设备。到目前为止,我已将这些说明转换为下面的代码 using UnityEngine; using System.Collections; using Mono.Nat; public class PortForwarding : MonoBehaviour { void

我目前正在使用UNet客户机-服务器系统,以便进行联网,并能够搜索LAN以外端口上的所有设备,如前一个问题所述。在四处搜索之后,我从网站上找到了一个合适的C#端口转发库,并一直按照说明进行操作,以便能够发现端口上的设备。到目前为止,我已将这些说明转换为下面的代码

using UnityEngine;
using System.Collections;
using Mono.Nat;

public class PortForwarding : MonoBehaviour {

    void Start()
    {
        NatUtility.DeviceFound += DeviceFound;
        NatUtility.DeviceLost += DeviceLost;


        Debug.Log("Discovery Started");
        NatUtility.StartDiscovery();
    }





    private void DeviceFound(object sender, DeviceEventArgs args)
    {
        Debug.Log("DeviceFound");
        INatDevice device = args.Device;
        device.CreatePortMap(new Mapping(Protocol.Udp, 10000, 10000));
        // Can be .Udp or Tcp but both create no results
        foreach (Mapping portMap in device.GetAllMappings())
        {
            Debug.Log(portMap.ToString());
        }
        // on device found code
    }

    private void DeviceLost(object sender, DeviceEventArgs args)
    {
        INatDevice device = args.Device;

        // on device disconnect code
    }


}
在我的场景中,我有三个空的游戏对象,每个都有一个脚本,一个用于创建服务器,第二个用于创建客户端,另一个用于测试端口转发(显示前两个脚本)。不幸的是,我没有得到任何结果,因此今天我要问你们我哪里出错了,我如何使用这个库来发现局域网以外的客户机或服务器

如果我遗漏了任何细节,或者你需要更多的细节来解决我的问题,那就直接问吧


我正在研究这一点,如果我发现任何有用的东西,我会告诉你的。谢谢,这似乎是一种简单的发现方法。我尝试了你的代码,效果很好。最好订阅一次事件,而不是每帧订阅一次。放置
NatUtility.DeviceFound+=DeviceFound不是一个好主意。我更新了你的代码来解决这个问题。将您问题中更新的代码附加到游戏对象,并告诉我您看到了什么日志。@程序员我没有得到日志的更改,我正在上传它们的图片(使用您的代码时)。如果有必要,我可以得到一个屏幕视频,我的设置,因为你说它是为你工作。你没有得到任何日志吗?您甚至没有启动
发现
日志?将脚本附加到已启用的游戏对象上……我正在研究这个问题,如果我发现任何有用的东西,我会告诉你的。谢谢,这似乎是一个很容易发现的方法。我尝试了你的代码,效果很好。最好订阅一次事件,而不是每帧订阅一次。放置
NatUtility.DeviceFound+=DeviceFound不是一个好主意。我更新了你的代码来解决这个问题。将您问题中更新的代码附加到游戏对象,并告诉我您看到了什么日志。@程序员我没有得到日志的更改,我正在上传它们的图片(使用您的代码时)。如果有必要,我可以得到一个屏幕视频,我的设置,因为你说它是为你工作。你没有得到任何日志吗?您甚至没有启动
发现
日志?将脚本附加到已启用的游戏对象。。。。