php socket_read all data

fixxxer

К.О.
Партнер клуба
Вообще смешивать протокол передачи и протокол приложения не стоит.
С точки зрения протокола передачи есть управление потоком и raw данные, а что там в этих данных, это дело приложения.
HTTP-клиент же не парсит HTML.
Вся OSI-модель на этом построена - не лезть на уровень выше. :)
 

Ragazzo

TDD interested
fixxxer
Нет, ну тут я просто забежал немного вперед описав как буду делать, а так с точки зрения даже улучшения MiksIr прав, в одном пакете может быть сколько угодно сообщений, а может и не быть вовсе, т.е. то что он предложил [{данные 1}, {данные 2}, {данные 3}] очень хорошо вписывается в концепцию, в качестве разделителя пакетов можно использовать \n и все. Если посмотреть то так много где сделано, в том же usb 2.0 при передачи пакетов данных например(первое что пришло в голову). А PHP я тут просто автоматом приписал, что и на уровне приложения гемора не будет)
 

Активист

Активист
Команда форума
Используйте нормар реад (разделение по символу новой строки), данные передавать через base64, проще.

На chunk разделения нужно делать примерно так
первый четыре байта - размер данных, далее данные, далее четыре байта crc данных.
 

Активист

Активист
Команда форума
я в свое время написал серверную часть, которая работает по сей день на массе проектов, потребляя минимальные ресурсы (правда не на php), работая годами, так вот, не по наслышке знаю о многих тонкостях клиент-серверной части, в т.ч. и при нетипичных ситуациях.
 

Вурдалак

Продвинутый новичок
Когда речь идёт о банальных лишних действиях — о чём тут можно говорить? Кому интересно, например, на C считывать по кускам данные в base64, а потом их ещё и раскодировать, когда можно было бы сразу узнать размер передаваемых данных, выделить буфер и считать всё за раз, либо тут же ответить, что не готов столько принимать? Зачем загонять себя в текстовый канал, если есть возможность передавать сырые данные и, как следствие, передавать меньший объём и делать меньше телодвижений на обеих сторонах?

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