有没有办法设置TCPListener使用网站IP地址而不是计算机IP地址。例如,不使用127.0.0.1,而是使用74.125.233.95(Google的IP地址。这里仅用于此处)。这是我试过的代码:
Dim hostname As IPHostEntry = Dns.GetHostByName(TextBox1.Text)
Dim ip As IPAddress() = hostname.AddressList
Dim port As Integer
Dim localAddr As IPAddress
Dim server As TcpListener
Try
port = 8080
server = New TcpListener(ip(0), port)
server.Start()
RichTextBox1.AppendText("Listening on : " & ip(0).ToString & vbNewLine)
Catch ex As Exception
RichTextBox1.AppendText(ip(0).ToString & " : " & ex.Message & vbNewLine)
End Try
以上代码输出:
74.125.233.95 : The requested address is not valid in its context
有没有办法用TCPListener或其他方法做到这一点?
编辑:
看到的是,我想创建一个可以通过互联网从世界上任何地方进行控制的应用程序。我希望尽可能简单,以便用户在使用路由器时不必定义端口转发,并且防火墙也不会阻止它。所以对我来说最好的方法是应用程序将通过我的网站域名来监听命令。
答案 0 :(得分:1)
您的代码不负责定义IP地址,它只绑定到计算机网络接口上操作系统配置的IP地址。
当您打开端口并使用TcpListener进行侦听时,您将绑定到具有IP地址的现有以太网接口(如果使用0.0.0.0 / INADDR_ANY,则绑定所有这些接口)。
编辑:OP澄清说,他希望接收来自和/或远程控制他分发的应用程序的请求,而不要求用户配置任何特殊的端口转发。
最好的方法是使用" push"。让您的所有应用程序都回家。
您可以在不启动从中央服务器到应用程序的TCP连接的情况下执行此操作,而是将应用程序连接到公共地址上的中央服务器,然后服务器可以通过按下命令/请求来控制应用程序。关键是,这可以在代理和NAT防火墙后面工作,而无需在用户网络上进行端口转发。您的服务器需要在公共IP地址上运行。在哪一端启动连接并不重要,一旦连接启动,它就是双向的。
答案 1 :(得分:0)
我想创建一个可以通过互联网从世界上任何地方进行控制的应用程序。我希望尽可能简单,以便用户在使用路由器时不必定义端口转发,并且防火墙也不会阻止它。所以对我来说最好的方法是应用程序将通过我的网站域名来监听命令。
不,这根本不是最佳方法。最好的方法是为您的应用程序以及希望控制它的用户连接到您提供和管理的中央服务器。中央服务器将中继请求。
您尝试的方法没有任何意义,也不起作用。