【问题标题】:Sharing port 443 between IIS and a C++ service在 IIS 和 C++ 服务之间共享端口 443
【发布时间】:2011-12-07 05:40:19
【问题描述】:

由于某个要求,我需要有一个服务在端口 443(可能是 80)上进行侦听,以便在同一 Windows 2008 服务器上与 IIS 共存。可以让 Windows 服务托管 WCF 服务与 IIS 共享端口 80,但我想知道这是否可以在 C++ 服务中实现?我已经阅读过类似问题的答案,例如thisthisthis,但我仍然没有得到合适的答案。

【问题讨论】:

  • 我不明白你的问题:哪个进程会回复给定的请求?
  • 我不确定进程是如何被选择的。但我想了解如何在 Net.Tcp 端口共享中完成此操作,以及是否可以在其他非 WCF 服务中使用此功能。
  • 我不知道什么是“Net.Tcp 端口共享”,我也不明白它对你有什么影响。你的规格是什么?你到底想做什么?您是否尝试模拟“Net.Tcp 端口共享”?

标签: c++ sockets iis tcp network-programming


【解决方案1】:

只有一个应用程序可以绑定到 ip-address/port-number 对。如果套接字绑定到 INADDR_ANY 和某个端口,则没有其他应用程序绑定到该端口。

如果您希望两个应用程序在一个端口上接收数据,您需要某种代理来侦听实际端口,而其他程序则侦听代理服务器连接到的其他端口或地址。

使用代理似乎是 WCF 处理端口共享的方式。引用this链接:

当 net.tcp 绑定启用端口共享时(通过在 传输绑定元素),它隐式允许外部进程(即 SMSvcHost.exe,承载 Net.TCP 端口共享服务)来管理上的 TCP 套接字 代表它。

【讨论】:

  • 有没有办法实现 WCF 在 C++ 中所做的事情?也许使用 IIS 或操作系统本身充当代理?
  • 你必须自己实现一个代理。
  • @RemyLebeau-TeamB 但是(对我来说)代理会做什么并不清楚。联系两台服务器?还是只有一个?哪一个?随机?
  • 代理需要监听可用端口。当客户端连接到代理端口时,代理然后连接到 IIS 的端口,并根据需要在两个连接之间来回传递数据,直到客户端或 IIS 断开连接,此时代理关闭两个连接的端点。
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 2019-07-23
  • 2012-11-01
  • 2021-03-10
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多