我開發了一個使用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