![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2011
Сообщений: 247
|
Собственно суть вопроса присутствует в названии темы, что можно принять с socket сервера ( картинки,exe,видео и т.п.)?
Интересует возможно ли получить от сервера не ссылку на картинку, а уже целую картинку? и хотелось бы приведенный пример увидеть глазком) |
|
|||||
|
Banned
[+4 24.02.14]
[+4 07.11.13] [+ 13.03.14] Регистрация: Mar 2013
Сообщений: 1,864
|
я давно в своей голове поставил галочки над этой и этой темой, но пока мне ещё далековато до их разбора.
Но я был бы рад, если бы они Вам помогли и ещё больше рад, если бы Вы после прочтения, ответили сами на свой вопрос. Чтобы я знал, что можно грузить) |
|
|||||
|
С сокета принимается набор байтов. Значит, всё что можно упаковать в набор байтов - можно передать. А в компьютере вообще то всё набор байтов: и мп3 файл, и картинка, и крякнутый инсталлятор симс4, который так хочет моя девушка.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Вопрос не в том что принять, а в том как прочитать.
На низком уровне сокет представлен как файл(очень грубое сравнение, но понять поможет). Сервер в этот файл постоянно пишет. Клиент постоянно читает. Флеш устроен таким образом что "непрерывное чтение" оставляет на совести виртуальной машины. И выдает данные порционно в прогресс-ивенте. Но суть от этого не меняется - это файл в который мы пишем, и из которого читаем. Хочу заметить: это ОДИН ФАЙЛ. А не по файлу на каждое сообщение. И на совести разработчика - как он порежет этот файл на части. По-умолчанию "\x00" - в качестве разделителя сообщений считается. Но не везде конает, так как не все серверные платформы по-умолчанию этот байт в конец дописывают и тогда надо резать месаджи самим руками. Короче. 1. Получили прогресс-ивент с сокета. Это значит в нашем файле сокета появились новые данные и мы начали их читать. 2. Начали читать из сокета и писать в буфер. 3. Каким-то образом поняли что получили полный месадж. 4. Когда поняли что к нам пришло(обычно мы заранее знаем что к нам придет) - распарсили как-то, известным методом. Понятно что картинку и текст парсить по-разному надо.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
|
|||||
|
Регистрация: Jan 2011
Сообщений: 247
|
Цитата:
![]() |
|
|||||
|
Ну, я всегда пишу в начало сообщения его длину. Если длина уж очень переменная – гоняем то "Hello world!", то режисёрскую версию кинокартины "Начало" – тогда я бы сначала писал длину длины, потом собственно длину, потом само сообщение.
Типа, первый байт – количество байтов, отведенных под длину сообщения (например, там лежит число три). Далее – n байтов для длины сообщения (в моём примере это три, т.е. сообщение в этом примере не больше, чем 2^24) Потом само сообщение, собственно.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
длина длины это круто)))
У нас интегерная длина вначале. Т.е. 4 байта. Всегда. А экономить на двух байтах хз. Не настолько велики нагрузки чтоб это окупилось.
__________________
Кто к нам с чем для чего - тот у нас того от того. |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:11. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| socket server |
|
|