以前的例子中未能接触到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 |