C# 执行端口转发时没有结果
我目前正在使用UNet客户机-服务器系统,以便进行联网,并能够搜索LAN以外端口上的所有设备,如前一个问题所述。在四处搜索之后,我从网站上找到了一个合适的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
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更新函数中的code>不是一个好主意。我更新了你的代码来解决这个问题。将您问题中更新的代码附加到游戏对象,并告诉我您看到了什么日志。@程序员我没有得到日志的更改,我正在上传它们的图片(使用您的代码时)。如果有必要,我可以得到一个屏幕视频,我的设置,因为你说它是为你工作。你没有得到任何日志吗?您甚至没有启动发现
日志?将脚本附加到已启用的游戏对象上……我正在研究这个问题,如果我发现任何有用的东西,我会告诉你的。谢谢,这似乎是一个很容易发现的方法。我尝试了你的代码,效果很好。最好订阅一次事件,而不是每帧订阅一次。放置NatUtility.DeviceFound+=DeviceFound更新函数中的code>不是一个好主意。我更新了你的代码来解决这个问题。将您问题中更新的代码附加到游戏对象,并告诉我您看到了什么日志。@程序员我没有得到日志的更改,我正在上传它们的图片(使用您的代码时)。如果有必要,我可以得到一个屏幕视频,我的设置,因为你说它是为你工作。你没有得到任何日志吗?您甚至没有启动发现
日志?将脚本附加到已启用的游戏对象。。。。