如何在不更改路由器设置的情况下连接到计算机
How to connect to the computer Without changing router settings
比如电脑IP在局域网下就是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 */ }
}
此代码仅在局域网下有效
但是我必须能够连接到互联网上的用户
您在专用网络上有一个自定义服务器。如果不同网络中的设备想要连接但没有可路由地址,则它无法连接 除非 gateway/router(public 上的设备可路由地址)配置了端口转发,将请求路由到特定端口到自定义服务器,并根据防火墙规则打开该端口。这可以在 gateway/router 手动完成,或者:如果 gateway/router 支持 UPnP,自定义服务器可以尝试通过 UPnP API.[=10= 通过代码自动配置端口转发]
但是,让部署的节点与中央服务器建立出站连接通常更方便(通常通过可能完全开放的端口,例如 80/ 443).
比如电脑IP在局域网下就是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 */ }
}
此代码仅在局域网下有效 但是我必须能够连接到互联网上的用户
您在专用网络上有一个自定义服务器。如果不同网络中的设备想要连接但没有可路由地址,则它无法连接 除非 gateway/router(public 上的设备可路由地址)配置了端口转发,将请求路由到特定端口到自定义服务器,并根据防火墙规则打开该端口。这可以在 gateway/router 手动完成,或者:如果 gateway/router 支持 UPnP,自定义服务器可以尝试通过 UPnP API.[=10= 通过代码自动配置端口转发]
但是,让部署的节点与中央服务器建立出站连接通常更方便(通常通过可能完全开放的端口,例如 80/ 443).