Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python(UNIX)套接字--读取所有数据_Python_Sockets_Unix - Fatal编程技术网

Python(UNIX)套接字--读取所有数据

Python(UNIX)套接字--读取所有数据,python,sockets,unix,Python,Sockets,Unix,如何从python套接字读取所有数据?对于一种更高级的语言来说,读取和连接缓冲区似乎没有“sendall”(如ruby中的Socket#read)对应物。如果我不得不求助于此(即连接缓冲区),那么假设我处理的是UNIX套接字,那么我应该选择一个最佳的缓冲区大小吗?您需要的更高抽象级别是,它可以安装在具有以下功能的套接字上: 等等,你的意思是:哦,我可能误解了你说的话。你想要一个receiveall函数,对吗?是的。读取所有数据,直到连接关闭。按照惯例,我通常使用类似于2048的缓冲区大小,但您必

如何从python套接字读取所有数据?对于一种更高级的语言来说,读取和连接缓冲区似乎没有“sendall”(如ruby中的
Socket#read
)对应物。如果我不得不求助于此(即连接缓冲区),那么假设我处理的是UNIX套接字,那么我应该选择一个最佳的缓冲区大小吗?

您需要的更高抽象级别是,它可以安装在具有以下功能的套接字上:


等等,你的意思是:哦,我可能误解了你说的话。你想要一个
receiveall
函数,对吗?是的。读取所有数据,直到连接关闭。按照惯例,我通常使用类似于
2048
的缓冲区大小,但您必须使用繁忙的while循环,以便像您可能怀疑的那样不断获取数据。Python确实为这类东西提供了更高级别的库,但如果您处理的是套接字,那么它的级别会有点低,是的。
SocketServer
为Unix套接字提供了子类,这些子类的级别应该更高一些,但在搜索之后,我实际上有点惊讶,除此之外,标准库中没有python的高级网络模块。
s = socket.socket(...)
...
all_data = s.makefile().read(-1)  # or, equivalently, readall()
s.close()