乙個WCF使用TCP協議進行通協的例子

2022-01-24 03:58:08 字數 1308 閱讀 1327

之前寫的例子都是基於http協議的,但在區域網環境下,我希望可以獲取更高的傳輸效能和更低的服務端資源占用,所以我嘗試使用tcp協議來進行傳輸。網上的例子都講得非常複雜,但終於讓我找到乙個簡單的實現方法,記錄如下:

一、建立wcf服務

首先建立乙個wcf服務庫,名稱為"wcfservice",解決方案名稱為"wcfdemo",同時"為解決方案

建立目錄"要勾上。

確定後vs會自動建立乙個iservice1介面和service1程式檔案,不過由於這個例子是演示如何使

用tcp協議的,所以我們就不再作任何修改。

二、建立宿主程式

在解決方案上按右鍵,選擇"新增" -> "新建專案",然後新建乙個windows 窗體應用程式,程

序名稱為"wcfhost"。

在解決方案資源管理器中,需要新增兩個引用:system.servicemodel和wcfservice。然後雙擊視窗,在form_load事件中編寫如下**:

<?xml version="1.0" encoding="utf-8" ?>

對於這個配置檔案,我是這樣理解的:

2、endpoint:該屬性有乙個address屬性,指的是在baseaddress基礎上增加address屬性等於乙個

完整的路徑。contract則是對應程式介面,這個就不多說。而每種協議都是對應wcfservice.iservice1契約。

到現在,wcf宿主程式就已經建立好了,我們編譯並在"非vs環境下"執行wcfhost應用程式。

三、建立客戶端應用程式

在解決方案上按右鍵,選擇"新增" -> "新建專案",然後新建乙個windows 窗體應用程式,程式名稱為"wcfclient"。0004

然後在專案上按右鍵,選擇"新增服務引用",在彈出的新增服務引用中,輸入baseaddress位址

:http://localhost:8001,然後點選「前往」,當確定沒問題後,點選「確定」按鈕。

我們現在為程式新增乙個按鈕,雙擊後編寫如下**:

private void button1_click(object sender, eventargs e)

就個demo這麼簡單就完成了。

乙個WCF問題

如果伺服器端和客戶端只是在同一區域網內 但是不是在同一機器上 那麼就肯定是不能都用localhost了 有什麼辦法能讓客戶端知道伺服器端的ip位址嗎?哪位大俠有嘗試過這個問題?另外,利用以下 可以獲得本地的所有ip位址 我如何通過判斷獲得本地的ipv4公網位址呢?1 獲取本地ip 2string i...

記錄乙個IOS訪問HTTPS協議TCP握手慢的問題

在andriod下測試介面響應速度都在300ms以內,ios上出現問題,前端找我反饋,由於前後端使用了不同的網域名稱和伺服器部署,前端使用vue axios和jquery ajax測試均發現請求緩慢,大概在6秒左右 我這邊初步懷疑是鏈路問題,測試人員切換了4g和wifi,結果一樣 然後他們使用香港 ...

C 乙個WCF簡單例項

以訂票為例簡單應用wcf程式,需要的朋友可以參考下 wcf例項 帶步驟 複製 如下 在iservice1.cs定義服務契約 複製 如下 namespace wcfdemo 使用下面示例中說明的資料約定將復合型別新增到服務操作。datacontract 資料契約 public class ticket...