최근에 게임용 포트 매핑을 설정하려고했습니다. 이것은 플레이어 중 한 명을 호스트로 만드는 것입니다. 이를 위해서는 플레이어가 포트 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 (test);와'Debug.Log ("4 ++"+ test);를 다시 실행 한 다음 질문을 다시 Log로 업데이트하십시오. 또한, Mono.NAT DLL은 어디에 두었습니까? – Programmer