通过套接字在原始表示中写入连续numpy数组

2024-06-10 03:03:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要将大型固定大小的缓冲区从python发送到c/c++代码端。 在python方面,我有以下形式的缓冲区:

array = np.zeros([1000], dtype=np.uint8)
array = fill(array)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 1010))

下面的代码用于从C/C++端从连接的套接字接收数据。从C/C++端,我需要将此缓冲区作为原始1000字节数组,我不需要任何头,我只需要数据。不幸的是,我还没有找到怎么做。一般来说np.tofile()-制作我需要的东西,但要归档

int recvBuffer(uint8_t *p_buff, uint32_t size, int socket)
{
    uint32_t recived = 0;
    uint8_t *p_curr = p_buff;
    while (recived < size)
    {
        int ret = recv(tcp_sock, p_curr, size - recived, 0);
        if (ret != -1)
        {
            p_curr += ret;
            recived += ret;
        }
        else
        {
            return false;
        }
    }
    return true;
}


Tags: 代码sizereturnnpsocketarray形式buff
1条回答
网友
1楼 · 发布于 2024-06-10 03:03:41

我找到了解决办法。 我在np.tofile描述中找到了它

np_array = np.zeros([1000], dtype=np.uint8)
np_array = fill(np_array)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 1010))
raw_buffer = np_array.to_bytes()
s.send(raw_buffer)

这正是我想要的raw_buffer-将np.array缓冲区作为原始c-stype缓冲区保存

相关问题 更多 >