c# - 尝试使用 C# 访问 Windows 7 计算机上的端口 80 时出错

标签 c# sql sockets iis

我们在尝试使用 C# 代码访问 Windows 7 计算机上的端口 80 时遇到问题。

此错误仅发生在 Windows 7 计算机上,而同一段代码在 Windows XP 计算机上可以正常工作。

我们使用的 C# 代码利用了核心套接字编程。下面是我们将地址绑定(bind)到端口 80 的代码片段。

public static int rx_Port = 80;

IPEndPoint ip_rx = new IPEndPoint(IPAddress.Any, rx_Port);

如果我们尝试访问端口 80,则会收到错误消息

“尝试以访问权限禁止的方式访问套接字”

我再次确定我已授予所有类别下的端口 80 通过防火墙进行通信的权限。

如果在 Windows 7 计算机上指定端口 80,即使是简单的客户端服务器程序也无法工作,但同一段代码在 Windows XP 计算机上可以正常工作。我真的不明白这里发生了什么......

对如何进行有什么想法吗?

最佳答案

内核模式 HTTP 驱动程序 HTTP.sys 正在运行。

您可以使用netsh进行配置。

http://msdn.microsoft.com/en-us/library/windows/desktop/cc308384(v=vs.85).aspx

例如,查看它正在监听哪些 IP 地址:

netsh http show iplisten

然后您可以使用

删除它们
netsh http delete iplisten address=1.1.1.1

(例如)。

但是,如果您正在编写 Windows 应用程序,我建议您可能希望与 IIS 合作,而不是仅仅禁用它。如果您使用 HttpListener,您可以将其配置为与 IIS 共享端口,并且它将接收对您指定的某些 URL 前缀的请求。

文档有一个简单的示例(我自己从未使用过这个)。

http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx

您必须使用 netsh 为您的应用程序授予对您要使用的 URL 前缀的用户身份权限。

关于c# - 尝试使用 C# 访问 Windows 7 计算机上的端口 80 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9936814/

相关文章:

c# - 从数据表中删除重复项的最佳方法是什么?

c# - 如何为自定义类中的 List<T> 属性创建索引访问器?

c++ - 更小超时值的 epoll 性能

perl - 在perl中通过套接字传递文件名

c# - 具有通用叶子的复合图案

c# - 在基类中定义的 log4net 记录器

SQL Server 2008 - 搜索查询

php - 通过 phpMyAdmin 执行 MySql #1054 错误

SQL:如何仅使用任何 "largest"的 "type"条目进行连接查询?

java - SocketException - 'Socket is closed' 即使 isConnected() 返回 true