SocketPolicy异常int TCP在Unity和C#server

时间:2017-05-13 08:26:32

标签: c# .net sockets unity3d tcp

我正在开发简单的多人游戏,我正在使用自己的编码服务器(在C#中)。

在服务器上有TCPListener:

 public void StartClientHandler()
    {
        Console.ForegroundColor = ConsoleColor.Green;
        Console.WriteLine("ClientHandler started");
        Console.ForegroundColor = ConsoleColor.White;
        TcpListener server = null;
        try
        {
            Int32 port = 4200;
            IPAddress localAddr = IPAddress.Parse("127.0.0.1");
            server = new TcpListener(localAddr, port);
            server.Start();


            while (true)
            {
                TcpClient client = server.AcceptTcpClient();
                lobby.addToOnline(new Client(client,lobby));
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.StackTrace);
        }

    }

和unity客户端有TCPClient:

static public bool InitializeConnection()
{
    try
    {
        client.Connect(ip, port);
        if (client.Connected)
        {
            stream = client.GetStream();
            Thread listener = new Thread(new ThreadStart(Listener));
            listener.Start();
        }
        else Debug.Log("not connected:(");

        return client.Connected;
    }
    catch (Exception e)
    {
        Debug.Log(e.StackTrace);
        return false;
    }


}

本地(使用" localhost"地址)一切都很完美! 但是,当我试图通过互联网或本地IP与朋友一起测试时,它会抛出这个例外:

  

在System.Net.Sockets.Socket.Connect(System.Net.EndPoint remoteEP,Boolean requireSocketPolicy)[0x00000] in:0   在System.Net.Sockets.Socket.Connect(System.Net.EndPoint remoteEP)[0x00000] in:0   在System.Net.Sockets.TcpClient.Connect(System.Net.IPEndPoint remote_end_point)[0x00000] in:0   在System.Net.Sockets.TcpClient.Connect(System.Net.IPAddress [] ipAddresses,Int32 port)[0x00000] in:0   UnityEngine.Debug:日志(对象)

哪里有问题?我读了一些关于它的问题,问题应该只出现在统一网络播放器中吗?但我正在构建它为Windows(EXE文件),但我也尝试将其构建到WEB GL播放器(由于线程有问题)

PS。我将路由器中的端口4200转发到我的服务器(用于通过互联网连接)

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

好的问题不在于政策。即使我转发了端口,我的服务器也没有收听打开的端口。

我不确定问题究竟是什么,但表单服务器代码我将ip格式127.0.0.1更改为0.0.0.0,端口类型从Int32更改为classic int。

这解决了我的问题。

如果有人能够解释我会很高兴:)