如何在 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 在不同笔记本电脑上运行时无法运行
C# socket服务器端 多线程客户端 如何少量使用CPU