【IT168 评论】 以前的例子中未能接触到socket协议,但这也是一个较为多用的协议,也是必须要学习掌握的。
此次例子采用本地及时通讯软件飞秋来做学习。
通过我下面录制的脚本来说明:
/*********************************************************************
* Created by Mercury Interactive Windows Sockets Recorder
*
* Created on: Tue Jul 07 10:44:31
*********************************************************************/
#include "lrs.h"
Action()
{
int i;
char *ActualBuffer;//定义字符指针
int NumberOfBytes;//定义int型变量保存长度
//这是第一步initializes a socket
lrs_create_socket("socket1", "UDP", "LocalHost=2425", LrsLastArg);
//我这里是让脚本连续运行多次
for(i=0;i<8;i++)
{
lr_start_transaction("send");
lr_think_time(7);
//这里是第二步,通过建立的socket1将buf1中的数据发送给远端MM-7QL3Z0JYUJN6用户,端口2425
lrs_send("socket1", "buf1", "TargetSocket=MM-7QL3Z0JYUJN6:2425", LrsLastArg);
//取得缓冲区数据
lrs_get_buffer_by_name("buf1", &ActualBuffer, &NumberOfBytes);
//输出缓冲区数据大小
lr_output_message("The buffer's size is: %d/n", NumberOfBytes);
//从buf2中接收返回的数据
lrs_receive("socket1", "buf2", LrsLastArg);
//取得缓冲区数据
lrs_get_buffer_by_name("buf2", &ActualBuffer, &NumberOfBytes);
//输出缓冲区数据大小
lr_output_message("The buffer's size is: %d/n", NumberOfBytes);
lr_end_transaction("send", LR_AUTO);
}
//第三步关闭释放socket连接
lrs_close_socket("socket1");
return 0;
}
下面我们来看buf中发送的数据,数据都会保存在data.ws文件中:
发送的明文内容:lihongtao,但是可以看出,这里显示的都是密文,应该是按格式转换了编码。还不太清楚,具体是一个怎么的组成格式。
;WSRData 2 1
send buf1 371
"1_lbt4_0#128#0016D3B50AA3#0#0#0:1246963533:Administrator:LND7DEMO:4194592:"
"20002:21b56c1d54100180afb94c84050a7f371f1010472b26092920ea2629699a74b2cbfe"
"242eb74b16e66e6fe90c4610ccb110ce400851e68e16c51470a91120dfcdf324444e647444"
"864e823810539413ed0b6b29a8ed46d2f95839047dbe4555b141afb80f5cf9c06e8af0aa90"
"afe852dbfedab05ee91932a95f6faef8207907fb:5f4c457c52738bfdfaf28c9303d292c6"
"\x00\x00"
recv buf2 87
"1_lbt4_0#131#001109AB80C9#0#0#0:1246475216:Administrator:MM-7QL3Z0JYUJN6:3"
"3:1246963533"
"\x00"
-1