gpt4 book ai didi

c++ - 缓冲区的套接字队列问题

转载 作者:行者123 更新时间:2023-11-28 01:09:13 30 4
gpt4 key购买 nike

我有一些代码:

队列的声明:

typedef deque<char*, allocator<char*> > CHARDEQUE;
typedef queue<char*,CHARDEQUE> CHARQUEUE;

CHARQUEUE p;
size_t size_q;
char recv_data[1024];

我使用 udp 套接字从远程机器接收数据:

这是循环:

while (1)
{
bytes_read = recvfrom(sock,recv_data,1024,0, (struct sockaddr *)&client_addr, &addr_len);

p.push(recv_data);
size_q=p.size();
printf("%d\n",size_q);
}

但问题是我无法将数据复制到我想要的队列中,我只能指向它...有人可以帮忙吗?

有关更多信息,我的程序正在接收原始数据,这就是我使用 char 数组的原因。有什么解决办法吗?

最佳答案

问题是您正在推送一个“char*”,它是一个指针到您的队列中,而不是实际数据!

使用 std::vector<char> ,如下所示(没有错误检查等 - 你应该顺便说一句!):

std::deque<std::vector<char> > p;


std::vector<char> read_buff;

// per loop iteration
read_buff.resize(1024);
// read
bytes_read = recvfrom(sock,&read_buff[0], 1024,0, (struct sockaddr *)&client_addr, &addr_len);
// now resize to contents
read_buff.resize(bytes_read);

// push this
p.push_back(read_buff);

关于c++ - 缓冲区的套接字队列问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346403/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com