【问题标题】:Program uses port 80, but it shouldn't程序使用端口 80,但它不应该
【发布时间】:2015-11-06 15:24:40
【问题描述】:

我正在创建简单的应用程序,它应该与托管服务进行通信。应用程序非常简单,您可以在任何 WCF 服务教程中找到这样的应用程序,并提供一个服务客户端来连接到服务。我正在使用端点

http://localhost:6480/DentalDesktop/ServerAgentService

对于服务,据我所知,应用程序应该只使用 6480 端口(在所有规则等中都是开放的)。 但是一旦我尝试启动应用程序,它就会抛出异常,该端口 80 已被另一个应用程序使用。一些调查显示,这是使用 80 端口的 Skype。

但是,我不明白为什么我的应用程序使用端口 80。我们使用另一个端口的唯一客户端-服务对。这是由 WCF 应用程序的某些默认连接引起的还是什么?

【问题讨论】:

标签: c# wcf port


【解决方案1】:

端口 80 是 HTTP 端口,浏览器用于非安全流量。

您能否提供有关您正在创建的应用类型的更多详细信息。它是网站、WPF 应用程序、服务等吗?

【讨论】:

  • 技术上它是 WinForms 应用程序。用于通过双工回调(WSDualHttpBinding)与服务通信,并根据它发起一些托盘图标相关的动作。
  • 你能贴出调用服务的代码吗?
【解决方案2】:

以下是我如何使用 iptables 在 VM 上进行端口转发。您首先必须启用端口转发,然后为 PREROUTING 链设置规则:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000

如果您想重定向本地主机流量,请改用:

sudo iptables -t nat -A OUTPUT -d localhost -p tcp --dport 80 -j REDIRECT --to-port 3000 

这些示例将流量从端口 80 路由到端口 3000。

【讨论】:

  • 通过将 Skype 配置为不使用端口 80 和 443 可以轻松解决端口问题。问题更像是,为什么我的程序使用此端口。
  • 它使用程序员分配给它的端口。前 1024 个端口受约定限制,在此之上,您可以选择希望服务侦听的端口号。端口号只是数字。例如,每个人都同意端口 80 应该是 HTTP 端口,这就是人们继续使用端口 80 进行 HTTP 的原因。
【解决方案3】:

好吧,我可以说...不要使用 http 或 tcp 从您自己的计算机连接到您的服务器。 net.pipe 完美运行,没有任何端口。

【讨论】:

    猜你喜欢
    • 2013-03-26
    • 2016-10-16
    • 1970-01-01
    • 2011-12-17
    • 2013-10-14
    • 2017-10-29
    • 2022-01-21
    • 2013-01-27
    相关资源
    最近更新 更多