海思板子利用unixctl socket网络编程,进行接口请求和cJSON解析之二

 

memset(info,0,len);
memcpy(info,recv_buffer,ret_value);

//注意,此处返回值是通过 memcpy来操作的,而非java那样函数返回值

 

#define MAX_SIZE    512

int getEncoderInfo (char *info, int len)
{
    struct sockaddr_un address;
    int sockfd;
    int len;
    int i, ret_value;
    int result;
    char recv_buffer[MAX_SIZE], send_buffer[MAX_SIZE] = "get";

    /*创建socket,AF_UNIX通信协议,SOCK_STREAM数据方式*/
    if ((sockfd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
            perror ("socket");
            return -1;
    }

    address.sun_family = AF_UNIX;
    strcpy (address.sun_path, "server_socket");

//注:此处的 server_socket,应根据实际情况,这里根据海思源码应改为 /tmp/encoder-api.sock


    len = sizeof (address);

    /*向服务器发送连接请求*/
    result = connect (sockfd, (struct sockaddr *)&address, len);
    if (result == -1) {
        printf ("ensure the server is up\n");
        perror ("connect");
        return -2;
    }


        memset(recv_buffer,0,MAX_SIZE);

        if ((ret_value = write(sockfd, &send_buffer, MAX_SIZE)) == -1) { /*发消息给服务器*/
            perror ("write");
            return -3;
        }

         if ((ret_value = read (sockfd, &recv_buffer, MAX_SIZE)) == -1) { /*接收消息*/
            perror ("read");
            return -4;
           }

         memset(info,0,len);
         memcpy(info,recv_buffer,ret_value);
    close (sockfd);

    return 0;
}

转载于:https://my.oschina.net/sicilycorleone/blog/1620219

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值