Показать сообщение отдельно
Старый 29.10.2013, 15:26
GrafMine вне форума Посмотреть профиль Отправить личное сообщение для GrafMine Найти все сообщения от GrafMine
  № 4  
Ответить с цитированием
GrafMine
 
Аватар для GrafMine

Регистрация: Jan 2011
Сообщений: 247
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Код AS3:
// Подготавливаем сообщение.
var msg:ByteArray = new ByteArray(); // будущее сообщение
var ba:ByteArray = new ByteArray(); // временный буффер в который запишем картинку
var encoder:JPGEncoder = new JPGEncoder(100); 
ba = encoder.encode(imm.bitmapData); // читаем картинку
 
msg.writeInt(ba.length); // если нужно длину указывать. 
// Если не надо, то и второй байтаррей не нужен, можно прямо в msg записать. 
// Просто без дополнительного БА - не сможем длину выудить.
// Ну и еще один момент - так мы запишем четыре байта длины. 
// А могут быть варианты с одним байтом или двумя. Опять же от вашего протокола зависит.
msg.writeBytes(ba); // тело сообщения
msg.writeInt(0x00); // признак конца сообщения. Поидее не нужен, но надо уточнять как сервер парсит.
 
socket.writeBytes(msg); // записываем в сокет.
socket.flush(); // отправляем
Спасибо большое на шаг ближе к цели стал, да пока длину некуда присвоить по идеи если сокет видит биты идущие к нему он не ограничивает длину а ждет конца потока, ну все равно есть кокой-то баг с разбитием файла, объясню:
если картинка больше чем 3 кб (3072 байта), то наверно срабатывает какое-то ограничение что его бьет , что это может быть кто знает ?

Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Нужно знать ваш формат протокола чтоб точно ответить.
Код AS3:
socket_create(AF_INET, SOCK_STREAM, SOL_TCP)