Linux下實現RPC程式設計

2021-05-10 14:02:25 字數 1562 閱讀 2115

linux 下面使用rpc需要使用到命令rpcgen.

在linux下開發rpc程式流程如下:

1.寫乙個rpc程式

如test.x

2.使用rpcgen生成必須的檔案,通常是客戶端和伺服器端以及標頭檔案

$rpcgen test.x

3.使用rpcgen生成伺服器端和客戶端的c語言**

$rpcgen -ss -o test_server.c test.x

$rpcgen -sc -o test_client.c test.x

4.生成makefile

$rpcgen -sm test.x>makefile

5.編輯原始檔,加入你想要的服務等

6.編輯makefile,這很重要!

7.執行測試

問題:1.伺服器無法啟動,錯誤如下:

cannot register service: rpc: unable to receive; errno = connection refused

unable to register (testprog, version, udp).

解決方法:系統沒有安裝portmap或者沒有啟動portmap埠對映。

$ls /etc/init.d/    

如果沒有portmap則安裝之

$sudo apt-get install portmap

如果有了,則啟動

$sudo /etc/init.d/portmap start

還可以使用chkconfig設定系統開機啟動的服務項,如將portmap加入開機啟動:

$sudo chkconfig --level 2 -s portmap on

下面是開發乙個rpc程式的具體流程,詳見

我在程式設計中遇到以下幾個問題:

1.mysql資料庫錯誤

1)報告連線不上mysql,**如下

if(mysql_real_connect(conn,"127.0.0.1","root","password",

"database",0,null,0))

原因如下:判斷語句錯誤,應該為if(mysql_real_connect(conn,...)==null)

2.更新資料失敗

char *sql="update test_table set balance=1000 where id=1000";

result=mysql_query(conn,sql);

if(result==null)

原因如下:還是判斷語句錯誤,由於更新操作不向查詢select操作,如果成功也是返回null,所以這裡不需要判斷result==null,其實這時資料庫中的結果已經被更新了。

3.rpc原始檔test.x書寫不當,但是我的程式已經基本實現了,這是怎麼辦?

第一次宣告test.x時就把函式完全宣告正確有一點困難,所以出錯在所難免,修改程式也很方便,首先,函式定義和宣告(舉例客戶端)在test_clnt.c,bank.h以及test_client.c(假設這個是你自己實現的客戶端),只要修改這三個檔案即可。

RPC 程式設計

anupama bindu,資深軟體工程師,ibm srinath karanam,軟體工程師,ibm 簡介 使用 rpc 程式設計是在客戶機和伺服器實體之間進行可靠通訊的最強大 最高效的方法之一。它為在分布式計算環境中執行的幾乎所有應用程式提供基礎。本文介紹 rpc 客戶機和伺服器之間基本的事件流...

RPC 程式設計

簡介 任何 rpc 客戶機 伺服器程式的重要實體都包括 idl 檔案 介面定義檔案 客戶機 stub 伺服器 stub 以及由客戶機和伺服器程式共用的標頭檔案。客戶機和伺服器 stub 使用 rpc 執行時庫通訊。rpc 執行時庫提供一套標準的執行時例程來支援 rpc 應用程式。了解執行時例程的內部...

RPC 程式設計

anupama bindu,資深軟體工程師,ibm srinath karanam,軟體工程師,ibm 簡介 使用 rpc 程式設計是在客戶機和伺服器實體之間進行可靠通訊的最強大 最高效的方法之一。它為在分布式計算環境中執行的幾乎所有應用程式提供基礎。本文介紹 rpc 客戶機和伺服器之間基本的事件流...