侦听端口是否已被使用? Unity网络错误
Is listen port already in use? Unity networking error
我正在尝试联网一个小型 2 人 Unity 游戏。这是我第一次接触网络,所以请随时纠正我做错的任何事情。我正在尝试提供一个简单的匹配服务,在游戏的主菜单上,玩家可以单击“查找匹配”按钮。这将执行以下功能
private HostData[] hostList;
private const string typeName = "UniqueGameName";
private const string gameName = "RoomName";
public void FindMatch() {
RefreshHostList();
if (hostList != null) {
JoinServer(hostList[0]);
} else {
StartServer();
}
}
下面是该函数中调用的相应方法。
private void RefreshHostList()
{
MasterServer.RequestHostList(typeName);
}
void OnMasterServerEvent(MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.HostListReceived)
hostList = MasterServer.PollHostList();
}
private void JoinServer(HostData hostData)
{
Network.Connect(hostData);
}
private void StartServer()
{
Network.InitializeServer(2, 25000, !Network.HavePublicAddress());
MasterServer.RegisterHost(typeName, gameName);
}
思路是,当玩家点击查找匹配时,会刷新主机列表。如果找到主机,它将加入他们的服务器并开始匹配。如果没有,它将启动自己的服务器并等待另一个玩家。测试时,第一个点击 Find Match 的玩家可以启动服务器,但第二个玩家收到错误消息“...监听端口是否已被使用?”。当我调试并逐步执行我的程序时,即使第一个玩家成功创建和注册了服务器,第二个玩家的 hostList 始终为空。
您是否在同一台机器上使用这两个应用程序实例?如果你占用了一次网络端口,那么你将无法在同一台机器上的同一端口上初始化服务器。
总的来说,我建议根据您的需要研究 SingalR 技术,它使用 websockets。
我正在尝试联网一个小型 2 人 Unity 游戏。这是我第一次接触网络,所以请随时纠正我做错的任何事情。我正在尝试提供一个简单的匹配服务,在游戏的主菜单上,玩家可以单击“查找匹配”按钮。这将执行以下功能
private HostData[] hostList;
private const string typeName = "UniqueGameName";
private const string gameName = "RoomName";
public void FindMatch() {
RefreshHostList();
if (hostList != null) {
JoinServer(hostList[0]);
} else {
StartServer();
}
}
下面是该函数中调用的相应方法。
private void RefreshHostList()
{
MasterServer.RequestHostList(typeName);
}
void OnMasterServerEvent(MasterServerEvent msEvent)
{
if (msEvent == MasterServerEvent.HostListReceived)
hostList = MasterServer.PollHostList();
}
private void JoinServer(HostData hostData)
{
Network.Connect(hostData);
}
private void StartServer()
{
Network.InitializeServer(2, 25000, !Network.HavePublicAddress());
MasterServer.RegisterHost(typeName, gameName);
}
思路是,当玩家点击查找匹配时,会刷新主机列表。如果找到主机,它将加入他们的服务器并开始匹配。如果没有,它将启动自己的服务器并等待另一个玩家。测试时,第一个点击 Find Match 的玩家可以启动服务器,但第二个玩家收到错误消息“...监听端口是否已被使用?”。当我调试并逐步执行我的程序时,即使第一个玩家成功创建和注册了服务器,第二个玩家的 hostList 始终为空。
您是否在同一台机器上使用这两个应用程序实例?如果你占用了一次网络端口,那么你将无法在同一台机器上的同一端口上初始化服务器。
总的来说,我建议根据您的需要研究 SingalR 技术,它使用 websockets。