通过网站IP的TCP连接

有没有办法设置一个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或其他方法来做到这一点?

编辑:

看到的是,我想创build一个应用程序,可以在互联网上从世界任何地方控制。 我想尽可能保持简单,这样用户在使用路由器时就不必定义端口转发,而且防火墙也不会阻塞它。 所以对我来说最好的办法是,应用程序将监听我的网站域名的命令。

您的代码不负责定义IP地址,它只绑定到计算机网络接口上由操作系统配置的IP地址。

当你打开一个端口并使用Tcplistner进行侦听时,你将绑定到一个带有IP地址的现有以太网接口(或者如果你使用0.0.0.0 / INADDR_ANY,那么它们都是)。

编辑:OP澄清,他想要接收和/或远程控制他分发的应用程序的请求,而不要求用户配置任何特殊的端口转发。

最好的方法是使用“推”。 使所有的应用程序手机回家。

您可以在不启动从中央服务器到应用程序的TCP连接的情况下执行此操作,而是使应用程序连接到公用地址上的中央服务器,然后服务器可以通过按命令/请求来控制应用程序。 重点是,这是从代理和NAT防火墙的后面工作,没有在用户网络上的端口转发。 您的服务器需要在公共IP地址上运行。 哪一端发起连接并不重要,一旦连接起来,就是双向的。

我想创建一个应用程序,可以在互联网上从世界任何地方控制。 我想尽可能保持简单,这样用户在使用路由器时就不必定义端口转发,而且防火墙也不会阻塞它。 所以对我来说最好的办法是,应用程序将监听我的网站域名的命令。

不,这不是最好的方法。 最好的方法是让你的应用程序和那些希望控制它的应用程序连接到你提供和管理的中央服务器。 中央服务器将中继请求。

你正在尝试的方法是没有意义的,不会工作。