簡體   English   中英

如何使用基於套接字的客戶端與WCF(net.tcp)服務?

[英]How to use socket based client with WCF (net.tcp) service?

我開發了一個使用net.tcp適配器並偵聽特定端口的WCF服務。 我想使用普通的.net客戶端連接到該服務,該客戶端使用套接字將數據發送到端口並偵聽響應。
當我嘗試向此服務發送數據時,我收到錯誤:“現有連接被遠程主機強行關閉”。
但是,我能夠通過另一個使用WCF服務的地址/綁定/合同的客戶端連接該服務。
有沒有一種方法可以讓我通過使用普通的基於套接字的客戶端與WCF服務進行通信?

關鍵決定是否使WCF服務符合套接字客戶端,或者是否使套接字客戶端符合WCF服務。

嘗試符合WCF服務最簡單,而不是嘗試在WCF中實現自定義內容,這絕非易事。 在下面的“其他資源”部分的底部,您將看到一個鏈接,該鏈接描述了嘗試符合WCF服務所必需的消息檢查。

話雖如此,.NET套接字本身並不與WCF通信。

任何這樣做的嘗試都需要在WCF方面進行自定義編程。

無論您是使用.NET中的TcpClient還是原始套接字連接到WCF並與之通信都無關緊要。 必須使用WCF中的自定義邏輯處理任何此類互操作性。 請注意,Net.Tcp是一種自定義傳輸協議。 從技術上講,TCP的使用方式與TcpClient相同。

例如,UDP在Linux世界中的套接字服務器中非常常用。 WCF不提供內置UDP傳輸。 但是,WCF有一個UDP示例,它為WCF實現UDP。 遺憾的是,該示例未說明與非WCF UPD套接字服務器之間的通信。

我有一個非常詳細的突出問題,我解釋了我的努力,以便通常可以測試使用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格式互操作,你最好使用原始套接字或創建自己的自定義WCF傳輸通道(這可能不是微不足道,順便說一下)

HY,

你啟用了WCF跟蹤嗎? 因為如果您這樣做,您會收到以下消息: “該服務不允許您匿名登錄。” 那么它(通常)是一個安全設置問題。

在這種情況下,禁用綁定的安全模式:

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

但更好的方法是使用證書。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM