php socket_read all data

  • Автор темы Автор темы Ragazzo
  • Дата начала Дата начала
Вообще смешивать протокол передачи и протокол приложения не стоит.
С точки зрения протокола передачи есть управление потоком и raw данные, а что там в этих данных, это дело приложения.
HTTP-клиент же не парсит HTML.
Вся OSI-модель на этом построена - не лезть на уровень выше. :)
 
fixxxer
Нет, ну тут я просто забежал немного вперед описав как буду делать, а так с точки зрения даже улучшения MiksIr прав, в одном пакете может быть сколько угодно сообщений, а может и не быть вовсе, т.е. то что он предложил [{данные 1}, {данные 2}, {данные 3}] очень хорошо вписывается в концепцию, в качестве разделителя пакетов можно использовать \n и все. Если посмотреть то так много где сделано, в том же usb 2.0 при передачи пакетов данных например(первое что пришло в голову). А PHP я тут просто автоматом приписал, что и на уровне приложения гемора не будет)
 
Используйте нормар реад (разделение по символу новой строки), данные передавать через base64, проще.

На chunk разделения нужно делать примерно так
первый четыре байта - размер данных, далее данные, далее четыре байта crc данных.
 
я в свое время написал серверную часть, которая работает по сей день на массе проектов, потребляя минимальные ресурсы (правда не на php), работая годами, так вот, не по наслышке знаю о многих тонкостях клиент-серверной части, в т.ч. и при нетипичных ситуациях.
 
Когда речь идёт о банальных лишних действиях — о чём тут можно говорить? Кому интересно, например, на C считывать по кускам данные в base64, а потом их ещё и раскодировать, когда можно было бы сразу узнать размер передаваемых данных, выделить буфер и считать всё за раз, либо тут же ответить, что не готов столько принимать? Зачем загонять себя в текстовый канал, если есть возможность передавать сырые данные и, как следствие, передавать меньший объём и делать меньше телодвижений на обеих сторонах?

P.S. Grammatik macht frei, btw.
 
Сверху