Я смущен, почему что-то работает. Я настройки службы WCF следующим образом:WCF service endpoint localhost confusion
<services>
<service name="ClientCommand" behaviorConfiguration="SomeServiceBehavior">
<endpoint contract="IClientCommand" binding="netTcpBinding" BindingConfiguration="TcpPort" address="net.tcp://localhost:1304" />
</service>
</services>
The BindingConfiguration и behaviorConfiguration очень просто, настройки некоторых тайм-аута.
В моем exe я запускаю этот хост.
_serverHost = new ServiceHost(type); // implementing IClientCommand
_serverHost.Open();
Все это довольно просто и работает, я могу назвать эту услугу с другого компьютера. Однако, прочитав другую проблему (прослушивая сокеты tcp), у меня создается впечатление, что она не должна работать. Поскольку я привязываюсь к localhost, сервис не должен быть доступен извне компьютера, на котором он работает?
Я проверил netstat на ПК и привязал его к IP-адресу «0.0.0.0» вместо «127.0.0.1», объясняя, почему он работает с другого компьютера.
Но я не понимаю, почему это происходит с localhost на "0.0.0.0"?
Я выкопал немного глубже, только чтобы больше запутаться. Если я использую 'net.tcp: // 127.0.0.1/service', он действительно привяжется к loopback, и он не будет доступен извне компьютера. Однако 'net.tcp: // localhost/service' будет связываться с 0.0.0.0 и будет доступен из-за пределов замыкания. Зачем? – Greuntesop