如何使用WCF(net.tcp)服务使用基于套接字的客户端?

我开发了一个使用net.tcp适配器并监听特定端口的WCF服务。 我想使用普通的.net客户端连接到该服务,该客户端使用套接字将数据发送到端口并侦听响应。
当我尝试将数据发送到此服务时,出现错误:“现有连接被远程主机强行closures”。
但是,我能够通过使用WCF服务的地址/绑定/合同的另一个客户端连接服务。
有没有一种方法可以使我通过一个普通的基于套接字的客户端与WCF服务进行通信?

关键的决定是让WCF服务符合套接字客户端还是使套接字客户端符合WCF服务。

尝试遵守WCF服务将是最简单的,而不是尝试在WCF中实现自定义内容,这从来都不容易。 在下面的其他资源部分的底部,您将看到一个链接,描述为了符合WCF服务而必需的邮件检查。

话虽如此,.NET套接字本身不与WCF通信。

任何尝试这样做都需要在WCF方面进行自定义编程。

无论您是使用TcpClient还是使用.NET中的原始套接字连接到WCF并与之通信都无关紧要。 任何这样的互操作性必须在WCF内部用自定义逻辑来处理。 请注意Net.Tcp是一个自定义传输协议。 这在技术上并不像TcpClient那样使用TCP。

例如,UDP是Linux世界中套接字服务器非常常用的。 WCF不提供内置的UDP传输。 但是,有一个WCF的UDP示例为WCF实现了UDP。 不幸的是,该示例没有说明与非WCF UPD套接字服务器进行通信。

我有一个相当详细的问题,我解释了我的努力,以获得示例代码一般可testing使用UDP …

是否有可能使WcfTestClient工作的自定义传输通道?

没有人回答我的问题。 所以,如果你成功做这个工作,我很感兴趣。 我的情况是由于希望WCF服务能够呼叫到在Linux上运行的UDP套接字服务器,而不必使用非WCF编码混淆我的服务。 我不想混合的方法。

其他资源…

Net.TCP绑定使用了一种自定义的电报级格式,虽然Nicholas Allen最近在这个主题上发表了一系列的博客文章。 系列从这里开始: http : //blogs.msdn.com/drnick/archive/2009/01/19/message-framing-part-1.aspx

说实话,目前Net.TCP对于WCF到WCF的通信更为有用。 如果你想用你需要处理的自定义TCP格式进行互操作,那么使用原始套接字或创build自己的自定义WCF传输通道(这可能不是微不足道的,顺便说一句)

HY,

你启用了WCF跟踪? 因为如果你这样做,你会得到以下消息: “该服务不允许你匿名login”。 那么通常是安全设置问题。

在这种情况下禁用绑定的安全模式:

<netTcpBinding> <binding name="MyCustomBinding"> <security mode="None" /> </binding> </netTcpBinding> 

但更好的是与证书一起工作。