我最近一直在尝试为我的游戏设置端口映射。这是为了让其中一名球员成为主人。为此,我需要玩家打开端口7777.Unity .Net 2.0 UPNP端口映射
如果已经有一个匹配,它只会加入它。如果它没有找到空的匹配,它只会做一个。如果它没有成功,它会一直等到有人加入并加入。
因此,我需要能够使用类似UPnP的东西来端口映射我的端口。我还需要能够发现错误,看看是否继续创建比赛,或者只是等待和加入比赛。
我目前在使用.NET 2.0的Unity游戏引擎工作。这使得我非常有限,因为Open.NAT不兼容。我尝试过Mono.NAT,但我无法正常工作。
有没有人有任何建议我应该如何处理?什么图书馆使用,甚至可以提供我的代码片段让我开始。
谢谢,TwoTen。
EDIT1:当前Mono.NAT代码如下所示:
private void DeviceFound(object sender, DeviceEventArgs args)
{
Debug.Log("1");
INatDevice device = args.Device;
Debug.Log("2");
Mapping map = new Mapping(Protocol.Tcp, 6699, 6699);
Debug.Log("3");
device.CreatePortMap(map);
Debug.Log("4");
int test = device.GetAllMappings().Length;
Debug.Log(test);
foreach (Mapping portMap in device.GetAllMappings())
{
Debug.Log("5");
Debug.Log(portMap.ToString());
}
}
private void DeviceLost(object sender, DeviceEventArgs args)
{
INatDevice device = args.Device;
Mapping map = new Mapping(Protocol.Tcp, 6699, 6699);
device.DeletePortMap(map);
}
我被称为最后的调试语句是4号。我的端口不会被打开,没有EXCETION要么抛出。 我在做什么错?
而且,在我启动功能我称之为:
NatUtility.DeviceFound += DeviceFound;
NatUtility.DeviceLost += DeviceLost;
NatUtility.StartDiscovery();
“我试过Mono.NAT,但我无法得到它的工作”请张贴代码。这对我有用。我需要看看你在做什么。另外,你怎么知道它不工作? – Programmer
我更新了帖子以包含我的代码。 – TwoTen
用'Debug.Log(“4 ++”+ test)重新调试'Debug.Log(test);'然后用Log重新更新问题。另外,你在哪里放置Mono.NAT DLL? – Programmer