lrs_save_param_ex是lrs_save_param的擴展函數,包含了lrs_save_param的基本功能。其函數語法結構如下:
int lrs_save_param_ex ( char *s_desc, char *type, char *buff, int offset, int length, char *encoding, char *param );
s_desc表示指定的Socket名稱;
type表示要存儲的數據類型,有“user”、“static”、“received”三種,分別代表用戶數據(腳本中自己定義的字符串)、靜態數據(data.ws中錄制的數據)、最後接收的緩沖區數據;
buff表示要保存哪個緩沖區的數據。這個參數與type有對應關系,如果type是“user”、“static”兩種,則需要指定具體的buffer名稱;如果是“received”則可以忽略這個參數;
offset表示在buffer中的偏移量;
length表示要從buffer中保存的字節數;
encoding表示的是解碼方式。對於“user”類型的buffer,需要指定其為ascii或者ebcdic中的一種,NULL值表示默認的格式為ascii。對於“static”與“received”兩種類型的buffer,則可以忽略這個參數,使用客戶端的原始編碼格式來進行解碼;
param表示要保存的參數名稱。
例3-11演示了這三種用法:UserBuffer是腳本中自定義的字符串,存儲的內容是"AAAAAThis is a userbuffer test!",執行代碼:
lrs_save_param_ex("socket0","user",UserBuffer,5,26,NULL,"Param_User");
後將會把第5個字符後的26個字符即“This is a userbuffer test!”保存到Param_User中;
如果buf1在data.ws中的內容如下:
recv buf1 38
"Get your command:Hello client!,長度13."
執行代碼:
lrs_save_param_ex("socket0","static","buf1",0,30,NULL,"Param_Static");
後,將會把buf1中從0開始的30個字符即“Get your command:Hello client!”保存到參數 Param_Static中。
如果lrs_receive最後接收到的數據包內容為“Length=11Successful.AAAAA”,則執行代碼:
lrs_save_param_ex("socket0","received",NULL,9,11,NULL,"Param_Received");
後,將會把從"socket0"收到的緩沖區數據中第9個字節後的11個字節即“Successful.”保存到參數Param_Received中。