2013-04-09 149 views
3

所以我一直在尋找不同的方式來創建客戶端和服務器程序(在C++中使用可視化工作室),並且我遇到了RPC(遠程過程調用)。但我注意到這也使用tcp/ip或udp連接。rpc和普通tcp/udp服務器客戶端程序的區別?

那麼從使用RPC到基本的tcp/ip或udp連接來連接客戶端和服務器有什麼不同?

代碼例如在RCP完全不同的使用TCP:

 reinterpret_cast<unsigned char*>("ncacn_ip_tcp"), // Use TCP/IP protocol. 
     reinterpret_cast<unsigned char*>("localhost"), // TCP/IP network address to use. 
     reinterpret_cast<unsigned char*>("4747"), // TCP/IP port to use. 

但在其他程序(例如,使用的WinSock)它需要更多的代碼 是一個比其他更好嗎?

回答

3

TCP/IP和UDP是數據傳輸協議(從這裏獲取數據包到那裏)。前者面向連接且可靠,而UDP則無連接且不可靠。他們都不在乎數據究竟是什麼(文件,網頁,視頻等)。

TCP/IP在兩個端點之間創建一個連接,然後在另一端接收任何一端發送的數據。

UDP沒有連接的概念,它是一次性「發送」,沒有關於傳送的保證。

幾個更高級別的網絡協議建立在TCP/IP和UDP之上。例如,HTTP(可以讓你查看這個網頁)。

RPC是一種更高級別的協議,它允許一臺計算機在另一臺計算機上執行代碼。您引用的代碼行只是爲該RPC實現設置配置參數。

摘要:RPC需要一種網絡傳輸協議(如TCP/IP)來完成它的工作,但是RPC是一種更高級別的協議,它實現的目的不僅僅是將非結構化數據從一臺計算機發送到另一臺計算機。

+0

所以RPC需要TCP/IP並且不能用於UDP? – 2013-04-09 11:07:18

+0

@LisaCollins RPC不需要TCP/IP ......它需要一個傳輸層。可能是TCP/IP,但它也可能是Unix Socket或其他將數據從A傳輸到B的其他設備,具體取決於某個協議應該使用的要求。 TCP/IP是例如當要求是必須收到請求和迴應並且不應該丟失時使用。 – 2013-04-09 13:49:36

+0

那麼RPC做了什麼,TCP/IP或UDP連接無法完成? – 2013-04-09 14:42:30

2

你在談論不同的概念。 RPC是機制,TCP/UDP - 通信方式。 RPC概念在不同語言中有很多實現:read wiki。 TCP/UDP - 是傳輸。

因此,就你而言,「使用TCP/UDP」的意思是「基於TCP/UDP創建你自己的RPC」。我建議你閱讀有關現有的RPC實現,並根據你的任務選擇最可接受的。