Значение параметра $type в socket_read()
Я пытаюсь создать подключение сокета tcp/ip из приложения aC# к сценарию 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 ответа
Важной частью является то, что документация говорит о другом выборе:
- PHP_NORMAL_READ - чтение останавливается на
\n
или же\r
,
Выбирать PHP_NORMAL_READ
если ваш сокет является линейно-ориентированным текстовым протоколом. Выбирать PHP_BINARY_READ
если ваш сокет что-нибудь еще.
Это означает, что при использовании PHP_BINARY_READ этот системный вызов будет использоваться для чтения из нижележащего сокета. Замечание о безопасности для двоичных данных объясняется противопоставлением этому альтернативы, которая гласит:
PHP_NORMAL_READ - чтение останавливается на \n или \r.
Следовательно, если вы хотите читать по одной строке за раз, используйте PHP_NORMAL_READ. В противном случае используйте PHP_BINARY_READ (по умолчанию).