在python中读取套接字时,os.read和socket.recv之间有什么区别吗?

在python中读取套接字时,os.read和socket.recv之间有什么区别吗?,python,windows,sockets,tcp,Python,Windows,Sockets,Tcp,假设我有一个插座。这两行代码之间的区别是什么 第1行: os.read(some_socket.fileno(), 1024) some_socket.recv(1024) 第2行: os.read(some_socket.fileno(), 1024) some_socket.recv(1024) …除了第一个在Windows上不起作用之外。换句话说,我能用第二行代替第一行吗?我有一个尚未在Windows上真正测试过的代码库,这会造成问题。第1行使用下划线文件描述符读取套接字,因此它取

假设我有一个插座。这两行代码之间的区别是什么

第1行:

os.read(some_socket.fileno(), 1024)
some_socket.recv(1024)
第2行:

os.read(some_socket.fileno(), 1024)
some_socket.recv(1024)

…除了第一个在Windows上不起作用之外。换句话说,我能用第二行代替第一行吗?我有一个尚未在Windows上真正测试过的代码库,这会造成问题。

第1行使用下划线文件描述符读取套接字,因此它取决于平台。使用第2行,因为它是一种可移植的、多平台的方式来完成同样的事情


强制性:如果你正在做任何严肃的事情,最好避免处理低级别的套接字。他们很难做出正确的决定,看起来事情正在进行,但有很多细节。这些细节已经在许多网络框架中得到解决,没有理由重新发明轮子。我建议,这很好。

我同意框架部分。但这段代码是测试的一部分,用于确定我们可以如何优雅地处理糟糕的TCP连接,因此我认为越脏越好。:-)