Winform HttpListener监听问题

ZhongGuanYao 2015-04-27 01:40:08
我查看了HttpListener类的MSDN文档,测试它提供的例子
https://msdn.microsoft.com/zh-cn/library/system.net.httplistener.aspx

class Program
{
static void Main(string[] args)
{
SimpleListenerExample(new string[]{"http://*:8080/"});
}

// This example requires the System and System.Net namespaces.
public static void SimpleListenerExample(string[] prefixes)
{
if (!HttpListener.IsSupported) {
Console.WriteLine("Windows XP SP2 or Server 2003 is required to use the HttpListener class.");
return;
}
// URI prefixes are required,
// for example "http://contoso.com:8080/index/".
if (prefixes == null || prefixes.Length == 0)
throw new ArgumentException("prefixes");

// Create a listener.
HttpListener listener = new HttpListener();
// Add the prefixes.
foreach (string s in prefixes) {
listener.Prefixes.Add(s);
}
listener.Start();
Console.WriteLine("Listening...");
// Note: The GetContext method blocks while waiting for a request.
HttpListenerContext context = listener.GetContext();
HttpListenerRequest request = context.Request;
// Obtain a response object.
HttpListenerResponse response = context.Response;
// Construct a response.
string responseString = "<HTML><BODY> Hello world!</BODY></HTML>";
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString);
// Get a response stream and write the response to it.
response.ContentLength64 = buffer.Length;
System.IO.Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
// You must close the output stream.
output.Close();
listener.Stop();
}
}

在代码中将URL设置为"http://*:8080/",启动运行,并在浏览器输入http://127.0.0.1:8080/或http:localhost:8080/都能监听返回信息Hello world!
之后我固定本地IP

在浏览器输入http://192.168.1.126:8080/却无法监听到

我将URL设置"http://192.168.1.126:8080/后运行,也是输入127.0.0.1和localhost能监听,而输入固定的IP地址时不能监听

这是怎么回事???求帮忙!!!
...全文
571 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZhongGuanYao 2015-04-28
  • 打赏
  • 举报
回复
防火墙操作DOS命令 http://blog.csdn.net/hyholine/article/details/7729172 在服务监听启动之前添加打开端口的方法:
private static void AddFireWallPort(int port)
        {
            string argsDll = String.Format(@"firewall set portopening TCP {0} ENABLE", port);
            ProcessStartInfo psi = new ProcessStartInfo("netsh", argsDll);
            psi.Verb = "runas";
            psi.CreateNoWindow = true;
            psi.WindowStyle = ProcessWindowStyle.Hidden;
            psi.UseShellExecute = false;
            Process.Start(psi).WaitForExit();
        }
测试通过,可以结贴了,感谢各位大牛的帮助!!!
ZhongGuanYao 2015-04-28
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
[quote=引用 7 楼 xiangxinzijiwonen 的回复:] [quote=引用 4 楼 FoxDave 的回复:] 先确定是不是防火墙的问题,把防火墙关了试试
不好意思,刚才关闭防火墙测试,是本地的浏览器输入固定IP访问不了的,现在用局域网其他电脑能正常访问了,现在知道是防火墙问题了。 但我不能关闭防火墙运行程序的,有什么好的方法解决?[/quote] 要让其它电脑访问,你需要把 端口号 加入防火墙的“例外”(或者“出栈、入栈”)规则中。[/quote] 太好了,太感谢了,在高级windows防火墙添加了端口的入站和出站规则(Win7),测试通过了。 不知道有没有DOS命令可以修改防火墙规则?
  • 打赏
  • 举报
回复
引用 7 楼 xiangxinzijiwonen 的回复:
[quote=引用 4 楼 FoxDave 的回复:] 先确定是不是防火墙的问题,把防火墙关了试试
不好意思,刚才关闭防火墙测试,是本地的浏览器输入固定IP访问不了的,现在用局域网其他电脑能正常访问了,现在知道是防火墙问题了。 但我不能关闭防火墙运行程序的,有什么好的方法解决?[/quote] 要让其它电脑访问,你需要把 端口号 加入防火墙的“例外”(或者“出栈、入栈”)规则中。
  • 打赏
  • 举报
回复
我在另一个帖子的一段代码:http://bbs.csdn.net/topics/390963758 看看哪里的个别字符不一样。
ZhongGuanYao 2015-04-28
  • 打赏
  • 举报
回复
引用 4 楼 FoxDave 的回复:
先确定是不是防火墙的问题,把防火墙关了试试
不好意思,刚才关闭防火墙测试,是本地的浏览器输入固定IP访问不了的,现在用局域网其他电脑能正常访问了,现在知道是防火墙问题了。 但我不能关闭防火墙运行程序的,有什么好的方法解决?
ZhongGuanYao 2015-04-28
  • 打赏
  • 举报
回复
关闭防火墙后,也换过其他端口测试了,还是不行
ZhongGuanYao 2015-04-28
  • 打赏
  • 举报
回复
引用 4 楼 FoxDave 的回复:
先确定是不是防火墙的问题,把防火墙关了试试
关闭防火墙测试,还是不行,应该不防火墙问题吧,现在更没思路了
Justin-Liu 2015-04-28
  • 打赏
  • 举报
回复
先确定是不是防火墙的问题,把防火墙关了试试
ZhongGuanYao 2015-04-27
  • 打赏
  • 举报
回复
引用 2 楼 Z65443344 的回复:
有一些端口是不需要加入白名单,默认就允许出入的 比如80端口 而8080是你自定义端口,不加入白名单,默认是禁止的
引用 2 楼 Z65443344 的回复:
有一些端口是不需要加入白名单,默认就允许出入的 比如80端口 而8080是你自定义端口,不加入白名单,默认是禁止的
如果是防火墙问题,我启动Tomcat服务,也是用8080端口,局域网机子应该不能访问才对,但测试结果是可以访问。 Win7系统没有防火墙白名单呀,怎么办?
於黾 2015-04-27
  • 打赏
  • 举报
回复
有一些端口是不需要加入白名单,默认就允许出入的 比如80端口 而8080是你自定义端口,不加入白名单,默认是禁止的
於黾 2015-04-27
  • 打赏
  • 举报
回复
看下防火墙,8080端口加入白名单了吗 你用127.0.0.1或localhost的时候,是直接内存映射的,不走网卡,当然也不走防火墙 你把网线拔掉,127.0.0.1也是能ping通的 此外,看看网线插了没有,网线没插,当然IP也是没法访问的

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧