При чтении сокета в Python, есть ли разница между os.read и socket.recv? - PullRequest
2 голосов
/ 24 июня 2009

Предположим, у меня есть розетка. В чем разница между этими двумя строками кода?

строка 1:

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

строка 2:

some_socket.recv(1024)

... кроме того факта, что первый не работает в Windows. Другими словами, могу ли я заменить вторую строку первой? У меня есть кодовая база, которая на самом деле не была протестирована с Windows, и это вызывает проблемы.

1 Ответ

6 голосов
/ 24 июня 2009

строка 1 использует дескриптор файла подчеркивания для чтения сокета, поэтому он зависит от платформы. Используйте строку 2, так как это переносимый, многоплатформенный способ выполнить то же самое.

Обязательно: если вы делаете что-то серьезное, лучше избегать работы с низкоуровневыми сокетами. Их трудно понять правильно, может показаться, что все работает, но есть много деталей. Эти детали уже решены во многих сетевых фреймворках, и нет причин изобретать велосипед. Я предлагаю витой , это очень хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...