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

时间:2009-06-24 16:30:36

标签: python windows sockets tcp

假设我有一个套接字。这两行代码之间有什么区别?

第1行:

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

第2行:

some_socket.recv(1024)

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

1 个答案:

答案 0 :(得分:6)

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

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