#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct rpc_return_data {
int wait_response;
int retu_data_len;
char retu_data[0];
} rpc_retu_data_t;
int append_recv(char *rcv_buf, int rcv_len, rpc_retu_data_t **tota_rcv_buf, int *tota_len)
{
int len;
rpc_retu_data_t *new_buf;
char *chs;
char *p;
if (rcv_buf == NULL)
{
return -1;
}
if (*tota_rcv_buf != NULL)
{
len = *tota_len + rcv_len;
new_buf = (rpc_retu_data_t *) malloc(len + sizeof(rpc_retu_data_t) + 1);
new_buf->wait_response = (*tota_rcv_buf)->wait_response;
new_buf->retu_data_len = len;
*tota_len = len;
p = (char *)new_buf;
p = p + sizeof(rpc_retu_data_t); //跨过rpc_retu_data_t头
memcpy(p, (*tota_rcv_buf)->retu_data, (*tota_rcv_buf)->retu_data_len); //把数据拷贝到头的后面
p = p + (*tota_rcv_buf)->retu_data_len; //跨过头和旧数据
memcpy(p, rcv_buf, rcv_len);
chs = (char *)new_buf;
chs[len + sizeof(rpc_retu_data_t)] = '\0';
free(*tota_rcv_buf); //释放旧数据
*tota_rcv_buf = new_buf;
} else {
len = rcv_len;
new_buf = (rpc_retu_data_t *) malloc(len + sizeof(rpc_retu_data_t) + 1);
new_buf->wait_response = 1; //这是处理读取的反馈数据,所以必然1;就是不是1,也不会错。
new_buf->retu_data_len = len;
*tota_len = len;
p = (char *)new_buf;
p = p + sizeof(rpc_retu_data_t); //跨过rpc_retu_data_t头
memcpy(p, rcv_buf, rcv_len);
chs = (char *)new_buf;
chs[len + sizeof(rpc_retu_data_t)] = '\0';
*tota_rcv_buf = new_buf;
}
return len;
}
int main(int argc, char * argv[])
{
char buf[256];
int tota_len = 0;
int len;
rpc_retu_data_t *total_buf = NULL;
memset(buf, 0, 256);
while(scanf("%s", buf))
{
len = strlen(buf);
append_recv(buf, len, &total_buf, &tota_len);
memset(buf, 0, 256);
printf("\ntotal_buf->retu_data_len=%d string=%s \n", total_buf->retu_data_len, total_buf->retu_data);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗