5

到目前为止,我已经得到了这个...

public static HttpListener listener = new HttpListener();
public static string startUpPath = Application.StartupPath;
public  WebServer()
{
    listener.Start();

    listener.Prefixes.Add("http://(here I want my public ip)/");
    Thread t = new Thread(new ThreadStart(clientListener));
    t.Start();
}

但是当我初始化类时它说"The specified Network format is not valid"

翻译可能并不完美,因为我的视觉工作室语言是西班牙语。我的 ip 看起来像 95.^^.^^^.^^,我认为这可能是问题,因为当我使用本地 ip 时它可以工作。

//已编辑

确切的例外是:“El formato del nombre de red especificado no es válido”"The specified network name is not valid". 如果我添加前缀 "http:// + :80/" 它仍然存在,但我怎样才能通过我的公共 ip 访问它?

4

2 回答 2

6

设置时,您应该使用您的内部 IP,因为那是您正在侦听的实际 IP。为了从您的外部 IP 获取流量,您需要将该流量从路由器转发到正在侦听其内部 IP 的计算机。

设置它的一种方法是使用端口转发,从您的路由器,您希望将端口 80 上的任何流量引导到您的计算机。

更多信息: http ://en.wikipedia.org/wiki/Port_forwarding

于 2013-07-23T19:47:46.247 回答
1

正如 Jamie 所说,您的 HTTPListener 应该绑定到运行应用程序的网卡上的 IP 地址。除非您有一个实际配置有公共 IP 的 NIC(例如,不通过路由器),否则您的私有地址就是要使用的地址。

一个简单的检查方法是运行 IPCONFIG 并查看列出的 IP 地址。

于 2013-08-03T17:33:25.350 回答