C和Python程序之间的通信问题

C和Python程序之间的通信问题,python,c,sockets,python-2.7,udp,Python,C,Sockets,Python 2.7,Udp,我试图在C程序和python程序之间实现UDP通信协议。C程序的结构是通过UDP端口tx_端口作为二进制数据发送。该程序还会在另一个端口rx_端口上侦听任何接收到的数据,然后将接收到的二进制输出打印到屏幕上 python程序监听tx_端口,解压缩接收到的数据并将其打印到屏幕上。然后它重新打包数据,并通过UDP端口rx_端口将其发送回 下面是我使用的C和Python程序 C程序 包括 包括 包括 包括 包括 包括 包括 定义BUFLEN 4096 定义RX_端口8888 定义TX_端口8889 /

我试图在C程序和python程序之间实现UDP通信协议。C程序的结构是通过UDP端口tx_端口作为二进制数据发送。该程序还会在另一个端口rx_端口上侦听任何接收到的数据,然后将接收到的二进制输出打印到屏幕上

python程序监听tx_端口,解压缩接收到的数据并将其打印到屏幕上。然后它重新打包数据,并通过UDP端口rx_端口将其发送回

下面是我使用的C和Python程序

C程序

包括 包括 包括 包括 包括 包括 包括 定义BUFLEN 4096 定义RX_端口8888 定义TX_端口8889 //结构数据 结构数据{ 长帧_数; 双倍时间; }tx_数据、rx_数据; int dlen=大小FTX_数据; 结构sockaddr_在si_me中,si_other; int tx_soc; int slen=sizeofsi_其他; 国际记录; char*buf; pthread_t rx_线程; 无效*接收器螺纹无效*参数 { int i=0; 而1{ recv_len=recvfromtx_soc,buf,sizeofrx_data,0,struct sockaddr*&si_other,&slen; printf\n收到的数据:%d\n,recv\u len; 对于i=0;i 从twisted.internet.protocol导入数据报协议 从twisted.internet导入 导入结构 数据包格式字符串 数据包\u fmt=.join['i',帧编号 “d”,帧时间戳 ] s=struct.Structpacket\u fmt EchoDataGrampProtocol类: def datagramReceivedself,数据,主机,端口: 新数据=s.unpackdata 打印新数据 echo_data=s.pack*新_数据 self.transport.writeecho_数据、主机、端口 reactor.listenUDP8889,Echo 反应堆运行 当我执行这两个程序时,我能够接收两侧的数据。我能够用python解包、打印、重新打包并发送数据

但在C端,接收的数据与发送的数据不匹配。我在python端进行了检查,以确保重新打包的数据与原始数据匹配

下面是C和Python程序的示例输出。我首先启动了python程序,然后是C程序


我可能犯了什么错误?

在我的机器上,16字节的C结构和Python结构都是。尝试移动buf=char*mallocsizeofrx_数据;在主线程中的while循环外部到接收线程。@J.F.Sebastian谢谢。这就是问题所在。我真不敢相信我把那个malloc放进了循环里。我已经改变了它,它工作得很好。