您的位置:首页 > 汽车 > 时评 > 【从零开始一步步学习VSOA开发】客户端机器人

【从零开始一步步学习VSOA开发】客户端机器人

2025/1/20 3:41:09 来源:https://blog.csdn.net/ScilogyHunter/article/details/140931621  浏览:    关键词:【从零开始一步步学习VSOA开发】客户端机器人

客户端机器人

概念

由前面 client 范例可见,使用 C 语言搭建 VSOA 客户端时步骤繁琐,且若服务端未启动时,客户端也将因连接服务端失败而不能正常运行。
VSOA 提供了客户端机器人功能,客户端机器人可以自动连接指定的服务端并保持连接,使得开发者可以更加关注业务逻辑实现。

源码

基于客户端机器人 API 接口修改前面 client 程序得到如下源码。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/select.h>
#include "vsoa_client.h"
#include "vsoa_cliauto.h"#define MY_SERVER_PASSWD                    "123456"static void on_command_echo (void *arg, struct vsoa_client *client, vsoa_header_t *vsoa_hdr, vsoa_payload_t *payload)
{printf("echo message, param:%.*s, data:%.*s\n",(int)payload->param_len, payload->param,(int)payload->data_len, (char *)payload->data);
}int main (int argc, char **argv)
{bool ret;vsoa_client_t *client;vsoa_client_auto_t *cliauto;/** 创建客户端机器人*/cliauto = vsoa_client_auto_create(NULL, NULL);/** 由客户端机器人获取客户端对象*/client  = vsoa_client_auto_handle(cliauto);/** 启动客户端机器人*/vsoa_client_auto_start(cliauto, "127.0.0.1:4001", MY_SERVER_PASSWD, NULL, 0, 1000, 1000, 1000);while (true) {/** 检查客户端是否正常链接到服务端*/if (vsoa_client_is_connect(client) == false) {continue;}/** 注册异步RPC请求*/vsoa_url_t url;vsoa_payload_t send;url.url     = "/echo";url.url_len = strlen(url.url);send.data = "1234567";send.data_len = strlen(send.data);send.param = "abcdefg";send.param_len = strlen(send.param);ret = vsoa_client_call(client, VSOA_CLIENT_RPC_METHOD_GET, &url, &send, on_command_echo, NULL, NULL);if (!ret) {fprintf(stderr, "Asynchronous RPC call error (not connected to server)!\n");}sleep(1);}
}

源码分析:

  1. VSOA 客户端 API 函数更详细说明可以查看博客https://blog.csdn.net/ScilogyHunter/article/details/140817028。
  2. 客户端机器人有一个固定框架:创建客户端机器人,由客户端机器人获取客户端对象,启动客户端机器人,等待客户端连接成功。用户客户端程序可以参考这个框架来写,只是配置参数和注册的请求依据实际需求而改动。
  3. 客户端机器人由一组 vsoa_client_auto_xxx 形式的函数实现。
  4. 调用vsoa_client_auto_create函数可以创建客户端机器人对象,输入参数和 vsoa_client_create 函数一样,创建时可以选择配置订阅函数和参数。
  5. 启动客户端机器人是需要指定客户端地址 IP 形式或 url 形式。设置连接超时时间和密码。同时可以设置一组想要订阅的 url 服务。
  6. 注册异步RPC请求的操作和之前一样,但要注意要判断在客户端连接正常时才能注册请求。
  7. 对比前面 client 程序源码可以发现借助客户端机器人可以大幅简化客户端操作程序。

执行程序

  1. 先启动服务端程序。
  2. 另外启动一个人 telnet 客户端,执行客户端程序。
  3. 查看客户端和服务端的打印信息。
    image.png
    image.png

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com