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

Jas*_*ker 2 python sockets windows tcp

假设我有一个插座.这两行代码有什么区别?

第1行:

os.read(some_socket.fileno(), 1024)
Run Code Online (Sandbox Code Playgroud)

第2行:

some_socket.recv(1024)
Run Code Online (Sandbox Code Playgroud)

...除了第一个在Windows上不起作用的事实.换句话说,我可以用第二行代替第一行吗?我有一个尚未经过Windows测试的代码库,这会造成麻烦.

nos*_*klo 6

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

必要的:如果你正在做任何严肃的事情,最好避免不得不处理低级套接字.他们很难做对,似乎事情有效,但有很多细节.这些细节已经在许多网络框架中得到解决,没有理由重新发明轮子.我建议扭曲,这是非常好的.