Python套接字接收双打

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python套接字接收双打相关的知识,希望对你有一定的参考价值。

我需要一个python程序来使用TCP连接(到另一个程序)来检索9个字节的集合。

九个字节中的第一个代表一个char,其余代表一个double。

如何从python套接字中提取此信息?我是否必须手动进行数学转换以转换流数据还是有更好的方法吗?

答案

看看python struct

http://docs.python.org/library/struct.html

所以像

from struct import unpack

unpack('cd',socket_read_buffer)

--> ('c', 3.1415)

小心Endianness。

另一答案

如果客户端和服务器都是用python编写的,我建议你使用pickle。它允许您将python变量转换为字节,然后返回到原始类型的python变量。

#SENDER
import pickle, struct

#convert the variable to bytes with pickle
bytes = pickle.dumps(original_variable)
#convert its size to a 4 bytes int (in bytes)
#I: 4 bytes unsigned int
#!: network (= big-endian)
length = struct.pack("!I", len(bytes))
a_socket.sendall(length)
a_socket.sendall(bytes)

以上是关于Python套接字接收双打的主要内容,如果未能解决你的问题,请参考以下文章

使用 python 套接字发送/接收数据

Python套接字不接收而不发送

如何将从套接字接收的多个值存储在python的结构中

Python网络编程——修改套接字发送和接收的缓冲区大小

Python套接字:错误接收数据

Python套接字recv()由于硬件而挂起?