2012-03-15 2 views
3

Я пытаюсь создать соединение сокета tcp/ip из приложения C# с скриптом PHP 5.3 с использованием сокетов PHP. Приложение C# должно отправлять строки JSON в PHP-скрипт.

Мой вопрос в отношении the socket_read manual: Что они означают с:

"PHP_BINARY_READ (Default) - use the system recv() function. 
Safe for reading binary data." 

Что именно PHP_BINARY_READ и почему я должен использовать функцию RECV() при использовании этого параметра?

Любая помощь очень ценится.

+2

Потому что, вы знаете, у PHP не было * почти достаточно * трещины в нем к тому времени, когда они добрались до 'socket_read()' ... –

ответ

4

Важной частью является то, что документация говорит о выборе в другой:

  • PHP_NORMAL_READ - чтение останавливается на \n или \r.

PHP_NORMAL_READ Pick, если сокет является линия-ориентированный текстовый протокол. Выберите PHP_BINARY_READ, если ваш сокет - что-то еще.

+2

ОК, спасибо, но почему они говорят, что я должен использовать recv() ? – Mike

+2

Ах! Это просто непонимание их английского языка; это утверждение о том, что когда вы даете этот параметр, это команда PHP, чтобы он использовал базовый системный вызов 'recv()' для получения данных. _You_ не нужно ничего с этим делать; он опять же контрастирует с линейным ориентированием более высокого уровня для другого параметра. – sarnold

+1

ага, понял! :-) Я был смущен, потому что такая функция действительно существует в PHP: http://www.php.net/manual/en/function.socket-recv.php – Mike

3

Это означает, что при использовании PHP_BINARY_READ тогда this system call будет использоваться для чтения из базового сокета. Замечание о безопасности для двоичных данных объясняются контрастным это с альтернативой, которая reads

PHP_NORMAL_READ - чтение останавливается на п \ или \ г.

Следовательно, если вы хотите читать по одной строке за раз, используйте PHP_NORMAL_READ. В противном случае используйте PHP_BINARY_READ (по умолчанию).

 Смежные вопросы

  • Нет связанных вопросов^_^