假设我有一个套接字。这两行代码之间有什么区别?
第1行:
os.read(some_socket.fileno(), 1024)
第2行:
some_socket.recv(1024)
...除了第一个在Windows上不起作用的事实。换句话说,我可以用第二行代替第一行吗?我有一个尚未经过Windows测试的代码库,这会造成麻烦。
答案 0 :(得分:6)
第1行使用下划线文件描述符来读取套接字,因此它与平台有关。使用第2行,因为它是一种可移植的多平台方式来完成同样的事情。
强制性的:如果你正在做任何严肃的事情,最好避免不得不处理低级套接字。他们很难做对,似乎事情有效,但有很多细节。这些细节已经在许多网络框架中得到解决,没有理由重新发明轮子。我建议twisted,这很不错。