WinSock在不同网络的两台机器之间连接出错C

WinSock connecting between two machines on different networks goes wrong C

我做了一个 server/client 程序,当我在同一个网络或同一台机器上建立连接时一切正常。然而,这是我的问题:当我断开客户端机器与本地网络的连接并将其连接到另一个网络(wifi)时,它没有连接到服务器。

这是我的服务器的一部分:

        ZeroMemory(&hints, sizeof(hints));
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;
        hints.ai_flags = AI_PASSIVE;

        res = getaddrinfo(NULL, PORT, &hints, &result);

客户:

        ZeroMemory(&hints, sizeof(hints));
        hints.ai_family = AF_INET;
        hints.ai_socktype = SOCK_STREAM;
        hints.ai_protocol = IPPROTO_TCP;

        res = getaddrinfo(SERVER_HOST, PORT, &hints, &result);

我的客户端代码中的目标端口与我的服务器中的相同。我在某处读到我必须购买一个唯一的 IP 地址?所以我的问题是:如何使用 C (WinSock) 中的套接字连接不同网络上的两台计算机?

好的,我发现我需要在路由器上进行端口转发。刚刚联系了我的网络提供商,因为我没有制作新 'port forward rule' 的选项。我在路由器配置中制定了一条新规则。我将我的私人(内部)IP 地址放入新规则中,并使用我在 server/client 程序中使用的端口号。 This is a nice resource.