请求的地址在TCP套接字通信的上下文中无效

时间:2014-03-10 20:26:11

标签: c# sockets tcp

我想在同一台PC上运行的两个应用程序之间实现套接字通信。其中一个是Unity应用程序(服务器)。所以我写了以下内容:

public class Main : MonoBehaviour {

    // Use this for initialization
    void Start () {

        // Set the TcpListener on port 13000.
        Int32 port = 8800;
        IPAddress localAddr = IPAddress.Parse("192.168.1.1");

        // TcpListener server = new TcpListener(port);
        TcpListener server = new TcpListener(localAddr,port);
        Socket socketForClient;

        try
        {
            server.Start();
            socketForClient = server.AcceptSocket();
            if (socketForClient.Connected)
            {
                print("connected");
            }
            else
            {
                print("not connected");
            }
        }
        catch (Exception e)
        {
            print(e.Message);
        }

    }

    // Update is called once per frame
    void Update () {

    }
}

当我开始游戏时,我得到以下结果:The requested address is not valid in its context.例外。有帮助吗?如果我希望服务器客户端在同一台PC上运行,我应该使用哪个IP /端口?

2 个答案:

答案 0 :(得分:1)

您可以在0.0.0.0上收听所有接口,包括环回和外部接口。

但如果您知道它是同一台机器,请使用127.0.0.1,因为它始终指向自身。

答案 1 :(得分:1)

根据IPAddress Fields,您可以使用IPAddress.Loopback作为本地环回接口。如果要在任何界面上建立连接,可以使用IPAddress.Any

在您的解决方案中,如果本地IP地址发生更改并且不再是192.168.1.1,则可能会出现问题 - 因此您应该使用框架提供的一种可能性(如Loopback或Any)。