如何在 C# Socket 中使用 ngrok tcp 隧道

Posted

技术标签:

【中文标题】如何在 C# Socket 中使用 ngrok tcp 隧道【英文标题】:How to use ngrok tcp tunnels with C# Socket 【发布时间】:2021-03-27 11:35:39 【问题描述】:

我需要在 ngrok 的帮助下连接到本地 tcp 服务器。 我试过这样连接:

Socket _clientSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_clientSocket.Connect(IPAddress.Parse("<int>.tcp.ngrok.io"), 10543); // Port of tcp tunnel

但问题是它没有连接到我。

【问题讨论】:

【参考方案1】:

从网站下载 ngrok 文件并使用以下命令启动它:

ngrok tcp (your port here)

当您启动它时,在转发之后您应该会看到域。在没有 tcp:// 的情况下复制它 之后你打开 cmd 并输入:

ping (ngrok domain eg. 2.tcp.ngrok.io:69420 becomes 2.tcp.ngrok.io)

要使 ping 真正起作用,您需要在域之后删除端口 然后在cmd中你应该看到一个ip,你应该在输出中看到一个ip。将此 ip 复制到您连接到服务器的代码的 ip 地址部分。选择端口作为域端口。

Client.Connect(IPAddress.Parse("ip in the cmd output"), port of the ngrok domain);

我相信这行得通,虽然不完全确定,但值得一试。

编辑: 我尝试了上面列出的内容,并且 IP 似乎每隔一段时间就会不断变化,但每次更改时它似乎仍然可以正常工作,而无需我更新代码中的 ip

【讨论】:

以上是关于如何在 C# Socket 中使用 ngrok tcp 隧道的主要内容,如果未能解决你的问题,请参考以下文章

Node.js,基于 socket-io 的一对一聊天引擎在本地运行良好,但在使用 ngrok 在不同笔记本电脑上运行时无法运行

如何调试 ngrok 隧道暴露的远程 JVM

C# socket服务器端 多线程客户端 如何少量使用CPU

使用 Ngrok 时 Python TCP 套接字返回 getaddrinfo 失败

如何在 google colab 中使用 ngrok?

如何中断 Socket.Select