如何让别人在不更改路由器设置的情况下连接我的电脑

问题描述 投票:0回答:1

例如,如果计算机的IP在Lan下,则为192.168.10.10 和互联网 IP 10.10.10.10.

如何在C#中设置Socket连接电脑?

“Ammyy Admin”等一些程序可以执行此操作。

public void Connect(string server)
{
    if (IsConnected)
        return;
    try
    {
        _server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        IPAddress[] allIp = Dns.GetHostAddresses(server);
        foreach (IPAddress ipa in allIp)
        {
            if (ipa.AddressFamily != AddressFamily.InterNetwork) continue;
            try
            {
                IPEndPoint remoteEndPoint = new IPEndPoint(ipa, DefaultPort);
                _server.Connect(remoteEndPoint);
                _server.SendBufferSize = SendReceveDataSize;
                _server.ReceiveBufferSize = SendReceveDataSize;
                DataHolder data = new DataHolder(_server, SendReceveDataSize);
                _server.BeginReceive(data.Buffer, 0, data.BufferSize, 0, ReceiveData, data);
                break;
            }
            catch { /* ignore */ }
        }
    }
    catch { /* ignore */ }
}

此代码仅在局域网下有效 但我必须能够连接到互联网上的用户

c# sockets ip portforwarding upnp
1个回答
4
投票

您在专用网络上有一个自定义服务器。如果不同网络中的设备想要连接但没有可路由地址,则它无法这样做除非网关/路由器(公共可路由地址上的设备)配置了端口转发,通过以下方式将请求路由到特定端口:到自定义服务器,并根据防火墙规则打开端口。这可以在网关/路由器上手动完成,或者:如果网关/路由器支持 UPnP,自定义服务器可以尝试通过 UPnP API 通过代码自动配置端口转发。

但是,让部署的节点与中央服务器建立出站连接通常会更方便(通常通过可能完全开放的端口,例如 80/443)。

© www.soinside.com 2019 - 2024. All rights reserved.