我目前正在使用UNet客户端 - 服务器系统进行网络连接,以便能够按照this上一个问题的建议搜索LAN之外的端口上的所有设备。搜索后,我从this网站找到了一个合适的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
}
}
在我的场景中,我有三个空的GameObject,每个都有一个脚本,一个用于创建服务器,第二个用于创建客户端,另一个用于测试端口转发(前两个脚本显示为here) 。不幸的是我没有得到任何结果,因此今天我问你哪里出错了我怎么能用这个库来发现局域网以外的客户端或服务器。
如果我错过了任何细节,或者您需要更多细节才能解决我的问题,请询问。