我开发了一个使用net.tcp适配器并侦听特定端口的WCF服务。我想使用普通的.net客户端连接到该服务,该客户端使用套接字将数据发送到端口并侦听响应。
当我尝试将数据发送到此服务时,出现错误:“现有连接被远程主机强行关闭”。
但是,我能够通过使用WCF服务的地址/绑定/合同的另一个客户端与服务连接。
有没有一种方法可以让我使用基于普通套接字的客户端与WCF服务进行通信?如何使用基于套接字的客户端与WCF(net.tcp)服务?
回答
关键的决定是让WCF服务符合套接字客户端还是使套接字客户端符合WCF服务。
这将是最简单的尝试符合WCF服务,而不是尝试在WCF中实现自定义内容,这从来都不容易。在下面的其他资源部分的底部,您将看到一个链接,描述为了符合WCF服务而必需的邮件检查。
话虽如此,.NET套接字本身不会与WCF通信。
任何尝试这样做都需要在WCF端进行自定义编程。
无论您是使用TcpClient还是使用.NET中的原始套接字连接到WCF并与之通信都无关紧要。任何这样的互操作性都必须在WCF中用自定义逻辑来处理。请注意,Net.Tcp是一种自定义传输协议。它在技术上并不像TcpClient那样使用TCP。
例如,Linux世界中的套接字服务器非常常用UDP。 WCF不提供内置的UDP传输。但是,有一个WCF的UDP示例为WCF实现了UDP。不幸的是,该示例没有说明与非WCF UPD套接字服务器进行通信。
我有一个突出的问题,我解释我的努力获得的示例代码一般是可测试使用UDP是相当详细...
Is it possible to make the WcfTestClient work for custom transport channels?
没有人回答我的问题呢。所以,如果你成功做出这项工作,我很感兴趣。我的情况是由于希望WCF服务能够呼叫到在Linux上运行的UDP套接字服务器而不必使用非WCF编码混淆我的服务。我不想混用各种方法。
其他资源...
选择一个交通运输
这篇文章指出,“WCF TCP传输的 情形,其中 通信的两端使用WCF优化”。尝试将非WCF客户端连接到使用basicHttpBinding的WCF服务 。
开发者最终通过WebClient(而不是 TcpClient)编写自定义代码 。
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c2d72c2d-c095-4ae1-b8ae-d15f32a4e0be/WCF与原.NET套接字
答案指出可能需要TCP +二进制序列化或UDP +二进制序列化 。有 是一个UDP绑定样本,如上面提到的我 。
http://social.msdn.microsoft.com/Forums/en-US/wcf/thread/c0520111-c1ca-4ffd-a4e0-ac68e86130ee/编写自定义的请求简单的WCF 服务
笔者介绍了如何计算出消息的格式 需要被发送到服务,所以 了的TcpClient或其他非WCF 套接字客户端可以将写入 信息发送给WCF服务。这里的 意味着你不是 试图符合WCF 服务,而是你正在强制 套接字客户端去做沉重的 解除。即便如此,如果您预计 那么您没有获得WCF 绑定的内置优势。
http://blogs.msdn.com/carlosfigueira/archive/2008/01/13/writing-custom-requests-to-simple-wcf-services.aspx
我的答案绝对不值得被低估。 – 2009-02-14 19:03:35
Hy,
您是否启用了WCF跟踪功能?因为如果你这样做,你会得到以下消息:“该服务不允许你匿名登录。”那么它通常是一个安全设置问题。
在这种情况下,禁用安全模式的结合:
<netTcpBinding>
<binding name="MyCustomBinding">
<security mode="None" />
</binding>
</netTcpBinding>
但是更好的将是与证书的工作。
的net.tcp绑定使用了是不是真的记录,虽然聂雅伦的话题开始了一系列博客文章的最近一个自定义线级帧格式。这个系列从这里开始:http://blogs.msdn.com/drnick/archive/2009/01/19/message-framing-part-1.aspx
说实话,Net.TCP对于WCF到WCF通信来说确实是非常有用的。如果您想与您需要处理的自定义TCP格式进行互操作,则使用原始套接字或创建自己的自定义WCF传输通道(这可能不是微不足道的,顺便说一句)要好得多了
- 1. 基于Netbeans的简单客户端/服务器套接字
- 2. 基于Webservice的套接字客户端
- 3. 无法为net.tcp添加服务客户端WCF服务
- 4. 基于客户端服务器套接字通信
- 5. 使用套接字的基于轮询的客户端服务器API
- 6. 用于Java客户端的WCF服务
- 7. 如何使用套接字创建服务器和客户端?
- 8. WCF net.tcp服务器断开连接 - 如何在客户端正确处理?
- 9. PHP套接字服务器/客户端
- 10. 客户端服务器udp套接字
- 11. 套接字java客户端服务器
- 12. 客户端 - 服务器套接字
- 13. C#套接字TCP客户端/服务
- 14. 服务器/客户端套接字
- 15. 客户端服务器套接字C#
- 16. Python服务器客户端套接字
- 17. Java套接字客户端/服务器
- 18. 如何使用套接字与Android客户端连接节点js服务器
- 19. 使用多个端口的套接字客户端/服务器
- 20. 如何使用客户端套接字
- 21. 如何监视客户端与WCF服务的连接?
- 22. 可以通过java客户端访问net.tcp服务(WCF)吗?
- 23. Java套接字。服务器端与客户端通讯
- 24. 客户端套接字接受的数据与服务器套接字不同
- 25. 何时使用Fifo上的套接字用于客户端服务器IPC?
- 26. 无法使用套接字连接客户端到服务器
- 27. 如何在客户端使用接口注入WCF服务?
- 28. Javascript客户端如何连接到PHp套接字服务器?
- 29. 接受客户端请求与服务器套接字
- 30. Typescript客户端套接字未与服务器连接
要确保大家都明白你在这里试图做什么......请你澄清一下,如果你正在尝试使用.NET内置的套接字编程工具连接到Net.Tcp WCF服务,反之亦然? – 2009-02-14 18:15:53
EnocNRoll,你是对的。 我正尝试使用基于套接字的客户端来传递基于net.tcp的WCF服务。 – Burhan 2009-02-16 09:33:12