代码之家  ›  专栏  ›  技术社区  ›  dlanod

WCF TCP和HTTP端点是否可以具有相同的端口?

  •  5
  • dlanod  · 技术社区  · 14 年前

    我对一个WCF服务器感兴趣,它公开了HTTP和TCP接口。它将与Silverlight客户机一起使用,因此我们认为HTTP接口将用于安全通信,而TCP将在其余时间使用。

    这两个接口是否可以在其端点中使用相同的端口,例如 http://localhost:9000/ 和net.tcp://localhost:9000/?

    2 回复  |  直到 14 年前
        1
  •  4
  •   Josh    14 年前

    不,这是不可能的。如果启用了TCP端口共享服务,则可以让多个服务在同一个TCP端口上侦听。WindowsHTTP侦听器还允许多个服务共享一个公共端口(例如,控制台应用程序和IIS都可以在不同的URL的端口80上侦听)。但不能在同一端口上使用多个绑定。

    但无论如何,我看不出这样做的好处。我个人会将HTTP端点留在端口80上,当然您的TCP端点被限制在一个较高的端口范围内。不过,我不确定您要启用什么场景。

        2
  •  -1
  •   Marc Novakowski    14 年前

    在TCP端口上只能有一个“侦听器”,因此,除非WCF服务器执行某种协议级多路复用(即,如果它读取HTTP头,则将其发送到HTTP处理程序,否则将其发送到“原始”处理程序),否则必须使用不同的端口。

    当然,找到这个问题的最快方法是用这两个接口和同一个端口配置服务器,并检查日志中的错误。可能每个线程或进程都试图绑定到端口9000,而第二个线程或进程将失败。