C#、socket通信(外部连接)

C#, socket communication (external connection)

我有一个关于 C# 通信的问题。

目前正在使用.Net,正在研究Socket。您可以使用内部 IP 创建套接字服务器并作为内部客户端连接。是否可以像聊天程序一样在另一个网络中打开服务器并从另一个网络连接到Socket Ip:Port?

Socket sListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("192.168.0.20"), 8000);
    
sListener.Bind(ipEndPoint);
sListener.Listen(20);
Socket sClient = sListener.Accept();

使用上述 IP 和端口号打开服务器并从另一个网络(客户端)连接到服务器是否需要配置什么?

谢谢:]

当然可以。我画了一个小图,用于正常的网络连接。

你必须做什么?

  1. 在您的路由器中打开一个端口(又名启用 port-forward)并将 60800 转发到 192.168.0.20:8000
  2. 确定你的外网ip。 Google“我的 ip 是什么”或转到我的 site.
  3. 通过 your-external-ip:60800.
  4. 连接

提示:60800 可以是任何其他随机 port-value。我建议使用高随机数,这样 hacker/scanner 就无法那么快地发现您的服务。

这是非常基础的。我建议您开始了解 ip-communication 的工作原理。