簡體   English   中英

如何使用C ++網絡程序交換數據?

[英]how to exchange data using c++ network programmimg?

------------------更新2015.12.13 ---------------

目前,我正在開發一個在Windows上具有網絡功能的程序

假設有四台PC,我選擇一台作為主節點,其他選擇作為從節點。從節點需要將xml文件(僅一次)和其他一些實時信息(例如:每5秒傳遞一次數據)傳遞給主節點。節點。

我對網絡編程一無所知,有沒有可以解決這個問題的框架

至於如何解決這個問題,我有一些我無法選擇的要點:

  1. 哪個庫或框架易於使用? winsocket POCO QT networkframe或其他?

  2. 我應該關注哪個級別的網絡? socket ?還是只使用已經打包的HTTP request ,這樣就不必關心套接字的實現了?

  3. 由於必須傳遞一些實時信息,因此設計此網絡功能是否有任何重要要點?

一種可能是完全將“網絡”部分抽象出來,並使用許多RPC機制中的一種,因此客戶端只需將參數傳遞給函數,然后不久,在服務器上使用相同參數調用函數。

僅舉一個例子,我已經多次使用過Apache Thrift 最近,我還使用Google RPC完成了一些工作。 兩者似乎都可以工作,盡管Thrift絕對是兩者中更成熟的。 根據您的需求,還有很多其他選擇。

有很多方法可以做到這一點。 最簡單的是不使用網絡API本身。 使用文件系統。 從站可以寫入服務器,一旦從站完成寫入,服務器將拾取文件。 您可以依靠Windows來實施SHARE_READ / SHARE_WRITE。 如果客戶端使用SHARE_NONE創建文件,那么其他人都無法打開文件,直到將其關閉。 僅當客戶端斷開網絡連接,崩潰等情況時,此操作才會失敗。更可靠的方法是讓客戶端使用“ \\ server-name \\ sharename \\ CLIENT_X_TEMP.xml”之類的名稱創建文件為了使服務器能夠使用它,請重命名為“ \\ server-name \\ sharename \\ SERVER_PLEASE_README_NOW.xml”。 服務器將僅查找名稱正確的文件。 似乎有點技術含量低,但它安全,便攜,堅固且易於使用。 由於不需要任何特殊的API,因此可以使用可以訪問文件系統的任何語言編寫客戶端和服務器。

如果要使用直接網絡API,則可以使用DCOM。 它允許您為客戶端調用和服務器實現指定類似C / C ++的接口。 它處理了序列化數據和傳輸到另一台計算機的所有復雜性。 這確實非常靈活,客戶端和服務器位於同一進程中,同一機器上或不同機器上的進程不同。 (多年來,Microsoft曾以許多名稱來稱呼這項技術。“基礎”層是“ RPC”,然后是COM,D-COM,ActiveX,也許還有其他一些名稱。

套接字非常容易安裝,並且比DCOM更易於移植,但是相當“原始”。 您將需要發明自己的協議來發送數據,因為套接字僅傳輸數據束。

HTTP只是通常通過套接字傳輸的協議。 這樣做的好處是可以使用許多不同的HTTP庫以及許多現成的服務器。 例如,IIS可用於處理傳入的請求並自動將其交給您的代碼-您可以通過多種方式對服務器進行編碼,Microsoft Visual Studio對此提供了很好的支持。

我沒有使用poco或QT,所以我無法發表評論。

暫無
暫無

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

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