0

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++ 側から接続されたソケットからデータを受信するために使用されます。残念ながら、私はそれを行う方法を見つけていません。一般的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;
}

4

1 に答える 1

0

解決策を見つけました。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 バッファとして保持します。

于 2021-01-25T08:48:05.840 に答える