C# 侦听端口是否已在使用?统一网络错误

C# 侦听端口是否已在使用?统一网络错误,c#,unity5,unity-networking,C#,Unity5,Unity Networking,我正在尝试网络一个小型的2人联合游戏。这是我第一次尝试社交,所以请随时纠正我做错的任何事情。我正在尝试做一个简单的配对服务,在游戏的主菜单上,玩家可以点击FindMatch按钮。这将执行以下函数 private HostData[] hostList; private const string typeName = "UniqueGameName"; private const string gameName = "RoomName"; public void FindMatch() {

我正在尝试网络一个小型的2人联合游戏。这是我第一次尝试社交,所以请随时纠正我做错的任何事情。我正在尝试做一个简单的配对服务,在游戏的主菜单上,玩家可以点击FindMatch按钮。这将执行以下函数

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);
}

这个想法是,当玩家点击FindMatch时,它会刷新主机列表。如果找到主机,它将加入他们的服务器并开始匹配。如果没有,它将启动自己的服务器并等待其他玩家。测试时,单击“查找匹配”的第一个播放机能够启动服务器,但第二个播放机收到错误消息“…侦听端口是否已在使用?”。当我调试并单步执行我的程序时,第二个玩家的主机列表始终为空,即使第一个玩家成功创建并注册了服务器。

您是否在同一台机器上同时使用应用程序的两个实例?如果只占用一次网络端口,则无法在同一台计算机的同一端口上初始化服务器


一般来说,我建议您根据自己的需要研究SingalR技术,它使用WebSocket。

您是否在同一台机器上同时使用两个应用程序实例?如果只占用一次网络端口,则无法在同一台计算机的同一端口上初始化服务器


一般来说,我建议您根据您的需要研究SingalR技术,它使用websockets。

示例-酷,我真的不知道,而且很好奇,网络新手,所以如果我错了,请纠正我,但第二个玩家正在尝试加入第一个玩家服务器,而不是使用相同的端口初始化一个新服务器?示例-酷,我真的不知道,而且很好奇,网络新手,所以如果我错了,请纠正我,但第二个玩家正在尝试加入第一个玩家服务器,而不是初始化一个具有相同端口的新服务器?