Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Что можно принять с socket server'a ? (http://www.flasher.ru/forum/showthread.php?t=204320)

GrafMine 27.10.2013 00:52

Что можно принять с socket server'a ?
 
Собственно суть вопроса присутствует в названии темы, что можно принять с socket сервера ( картинки,exe,видео и т.п.)?
Интересует возможно ли получить от сервера не ссылку на картинку, а уже целую картинку?
и хотелось бы приведенный пример увидеть глазком)

Akopalipsis 27.10.2013 01:00

я давно в своей голове поставил галочки над этой и этой темой, но пока мне ещё далековато до их разбора.
Но я был бы рад, если бы они Вам помогли и ещё больше рад, если бы Вы после прочтения, ответили сами на свой вопрос. Чтобы я знал, что можно грузить)

Psycho Tiger 27.10.2013 03:55

С сокета принимается набор байтов. Значит, всё что можно упаковать в набор байтов - можно передать. А в компьютере вообще то всё набор байтов: и мп3 файл, и картинка, и крякнутый инсталлятор симс4, который так хочет моя девушка.

Dukobpa3 27.10.2013 04:23

Вопрос не в том что принять, а в том как прочитать.
На низком уровне сокет представлен как файл(очень грубое сравнение, но понять поможет).

Сервер в этот файл постоянно пишет.
Клиент постоянно читает.

Флеш устроен таким образом что "непрерывное чтение" оставляет на совести виртуальной машины. И выдает данные порционно в прогресс-ивенте.
Но суть от этого не меняется - это файл в который мы пишем, и из которого читаем.
Хочу заметить: это ОДИН ФАЙЛ. А не по файлу на каждое сообщение.
И на совести разработчика - как он порежет этот файл на части. По-умолчанию "\x00" - в качестве разделителя сообщений считается. Но не везде конает, так как не все серверные платформы по-умолчанию этот байт в конец дописывают и тогда надо резать месаджи самим руками.

Короче.
1. Получили прогресс-ивент с сокета. Это значит в нашем файле сокета появились новые данные и мы начали их читать.
2. Начали читать из сокета и писать в буфер.
3. Каким-то образом поняли что получили полный месадж.
4. Когда поняли что к нам пришло(обычно мы заранее знаем что к нам придет) - распарсили как-то, известным методом. Понятно что картинку и текст парсить по-разному надо.

GrafMine 27.10.2013 13:57

Цитата:

Сообщение от Dukobpa3 (Сообщение 1150020)
Вопрос не в том что принять, а в том как прочитать.

Короче.
1. Получили прогресс-ивент с сокета. Это значит в нашем файле сокета появились новые данные и мы начали их читать.
2. Начали читать из сокета и писать в буфер.
3. Каким-то образом поняли что получили полный месадж.
4. Когда поняли что к нам пришло(обычно мы заранее знаем что к нам придет) - распарсили как-то, известным методом. Понятно что картинку и текст парсить по-разному надо.

Вы правильно поняли мою суть вопроса , именно это я и хочу узнать\увидеть как делают :)

Psycho Tiger 27.10.2013 14:53

Ну, я всегда пишу в начало сообщения его длину. Если длина уж очень переменная – гоняем то "Hello world!", то режисёрскую версию кинокартины "Начало" – тогда я бы сначала писал длину длины, потом собственно длину, потом само сообщение.
Типа, первый байт – количество байтов, отведенных под длину сообщения (например, там лежит число три).
Далее – n байтов для длины сообщения (в моём примере это три, т.е. сообщение в этом примере не больше, чем 2^24)
Потом само сообщение, собственно.

Dukobpa3 27.10.2013 15:05

длина длины это круто)))
У нас интегерная длина вначале. Т.е. 4 байта. Всегда. А экономить на двух байтах хз. Не настолько велики нагрузки чтоб это окупилось.


Часовой пояс GMT +4, время: 05:52.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.