Python(UNIX)套接字--读取所有数据
如何从python套接字读取所有数据?对于一种更高级的语言来说,读取和连接缓冲区似乎没有“sendall”(如ruby中的Python(UNIX)套接字--读取所有数据,python,sockets,unix,Python,Sockets,Unix,如何从python套接字读取所有数据?对于一种更高级的语言来说,读取和连接缓冲区似乎没有“sendall”(如ruby中的Socket#read)对应物。如果我不得不求助于此(即连接缓冲区),那么假设我处理的是UNIX套接字,那么我应该选择一个最佳的缓冲区大小吗?您需要的更高抽象级别是,它可以安装在具有以下功能的套接字上: 等等,你的意思是:哦,我可能误解了你说的话。你想要一个receiveall函数,对吗?是的。读取所有数据,直到连接关闭。按照惯例,我通常使用类似于2048的缓冲区大小,但您必
Socket#read
)对应物。如果我不得不求助于此(即连接缓冲区),那么假设我处理的是UNIX套接字,那么我应该选择一个最佳的缓冲区大小吗?您需要的更高抽象级别是,它可以安装在具有以下功能的套接字上:
等等,你的意思是:哦,我可能误解了你说的话。你想要一个
receiveall
函数,对吗?是的。读取所有数据,直到连接关闭。按照惯例,我通常使用类似于2048
的缓冲区大小,但您必须使用繁忙的while循环,以便像您可能怀疑的那样不断获取数据。Python确实为这类东西提供了更高级别的库,但如果您处理的是套接字,那么它的级别会有点低,是的。SocketServer
为Unix套接字提供了子类,这些子类的级别应该更高一些,但在搜索之后,我实际上有点惊讶,除此之外,标准库中没有python的高级网络模块。
s = socket.socket(...)
...
all_data = s.makefile().read(-1) # or, equivalently, readall()
s.close()