Значение параметра $ type в socket_read () - PullRequest
3 голосов
/ 16 марта 2012

Я пытаюсь создать соединение через сокет tcp / ip из приложения c # к скрипту PHP 5.3, используя сокеты PHP. Приложение c # должно отправлять строки JSON в сценарий PHP.

Мой вопрос относительно руководства по socket_read : Что они означают:

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

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

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

Ответы [ 2 ]

4 голосов
/ 16 марта 2012

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

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

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

3 голосов
/ 16 марта 2012

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

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

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

...