Python套接字接收和存储

2024-09-28 03:14:48 发布

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

我在C++程序和Python脚本之间建立了一个套接字。它非常简单,我想把坐标从C程序发送到Python。这只是第一次尝试,我想发送一组坐标,如下所示:

C++程序,服务器:

struct coord {
    int x;
    int y;
    int z;
 };

struct coord co;

co.x = 1;
co.y = 2;
co.z = 3;


char *msg;
msg = (char*) &co;

send(newsockfd, msg,strlen((char*) &co), 0);

这是很重要的一部分,在此之前我已经成功初始化了一个具有特定地址的套接字。现在我想把这三个坐标发送给python程序。我将地址发送到第一个整数(co.x)和分配的内存,这应该是12个字节。在

这是python脚本。再说一遍,我只写了一些重要的东西。在

^{pr2}$

现在我想访问前4个字节并将其存储在变量中,然后将4个字节存储在单独的变量中,最后4个字节存储在第三个变量中。但我该怎么做呢?recvInt是这个,看起来,无用的对象字节,我还没有设法把它转换成任何东西,而且打印输出也没有任何意义。有人能帮我或者给我指点方向吗?在

编辑:当我打印:type(recvInt)时,它说它是一个str。考虑到函数的文档,这也很奇怪接收插座()它清楚地声明它返回一个字节。但是,现在我也发现了这个函数应该返回数据的字符串表示形式的文档。哪个是正确的?这个假设的字符串表示只是一个四位数的小盒子,看起来像是一个字节的可视化表示。但是msg包含12个字节,并且在recvInt上没有索引。 谢谢你


Tags: 函数字符串文档程序服务器脚本字节地址
1条回答
网友
1楼 · 发布于 2024-09-28 03:14:48

看看python的struct库。在

基本上,对于你的情况,下面这样的方法可能有用。在

import struct

x, y, z = struct.unpack("!iii", receivedData)

上面的代码将把接收到的字符串解析为3个有符号整数。在

socket.recv返回一个基本上是字节数组的二进制字符串。Python没有为recvInt或parseInt提供单独的函数,而是提供一个库来将任意二进制字符串解析为不同大小的整数或字符串。在

相关问题 更多 >

    热门问题