2009-06-24 6 views
2

ソケットがあるとします。これら2行のコードの違いは何ですか?Pythonでソケットを読むとき、os.readとsocket.recvに違いはありますか?

行1:最初のものは、Windows上で動作しないという事実以外の

some_socket.recv(1024) 

...:

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

ライン2。言い換えれば、最初の行を2行目に置き換えることはできますか?私はWindowsで実際にテストされていないコードベースを持っており、これは問題を引き起こしています。

答えて

6

1行目は下線付きファイル記述子を使用してソケットを読み取るため、プラットフォームに依存します。 2行目は、ポータブルでマルチプラットフォームなので、同じことを達成できます。

重要:何か深刻なことを行う場合は、低レベルのソケットに対処する必要はありません。彼らは正しいことを得るのが難しいです、それは事が働いているように見えるかもしれませんが、多くの詳細があります。これらの詳細は、多くのネットワーキングフレームワークですでに解決されており、その革新の理由はありません。私はtwistedを提案する、それはかなり良いです。

+0

私はフレームワークの部分に同意します。しかし、このコードは、TCP接続が正常に処理できないかどうかを判断するためのテストの一部です。 :-) –

関連する問題