Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.05.2012, 03:27
Давид вне форума Посмотреть профиль Отправить личное сообщение для Давид Найти все сообщения от Давид
  № 1  
Ответить с цитированием
Давид

Регистрация: Apr 2012
Сообщений: 19
По умолчанию Сокеты

Здравствуйте с помощью As3 создал сокетное соединения с сервером
при нажаты клавиш, As3 записывает сообщения в сокет например вот так,
x5
x20x25x30y5y10
y15y20
y25y30x35
и т.д

мне нужно чтобы каждый сообщения записывался в сокет одельо. т.е так
x20
x25
x30
y5
y10
y15

как можно решить?
Код AS3:
   /* connect to socket */
var socket = new Socket("localhost", 1024);
      socket.connect;   
   socket.flush;
 
           /* state of connect to socket */        
socket.addEventListener(Event.CONNECT,socketConnected);
   function socketConnected(e:Event):void{
   trace("client - socket connected", socket.connected);
   }
 
           /* read the string from the socket*/
socket.addEventListener(ProgressEvent.SOCKET_DATA,socketData);
   function socketData(e:ProgressEvent):void{
   var x1='';
   var y1='';
   var read_socket=socket.readUTFBytes(socket.bytesAvailable);
    if (read_socket.indexOf('x')==0){
     for (var i=1; i<read_socket.length; i++){   
      x1=x1+read_socket.charAt(i);   
           }
    sqr.x=Number(x1);   
    }
    if (read_socket.indexOf('y')==0){
     for (i=1; i<read_socket.length; i++){   
      y1=y1+read_socket.charAt(i);   
           }
    sqr.y=Number(y1);   
    }
   trace(read_socket);   
   }
 
 
 
         /*Move to sqr*/
var speed:Number = 5;
stage.addEventListener(KeyboardEvent.KEY_DOWN, downn);
 
   function downn(e:KeyboardEvent): void{
   if (e.keyCode==37){
    socket.writeUTFBytes('x'+sqr_i.x);        //write to socket
    socket.flush();
    sqr_i.x -= speed;
   }if(e.keyCode==39){
    socket.writeUTFBytes('x'+sqr_i.x);
    socket.flush();
    sqr_i.x += speed;
   }if(e.keyCode==38){
    socket.writeUTFBytes('y'+sqr_i.y);
    socket.flush();
    sqr_i.y -= speed;
   }if(e.keyCode==40){
    socket.writeUTFBytes('y'+sqr_i.y);
    socket.flush();
    sqr_i.y += speed;
   }   
   }
 
 
 
 
 
   socket.close;

Старый 06.05.2012, 04:00
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Обычно или разделяют сообщения неким спец. символом (например '\0') или пишут длину сообщения, а затем само сообщение.
Может и можно именно записать в сокет отдельно каждое сообщение, но гарантии, что они придут столькими же кусками, сколькими были отправлены - нет.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 06.05.2012, 11:36
Давид вне форума Посмотреть профиль Отправить личное сообщение для Давид Найти все сообщения от Давид
  № 3  
Ответить с цитированием
Давид

Регистрация: Apr 2012
Сообщений: 19
Цитата:
Сообщение от -De- Посмотреть сообщение
Может и можно именно записать в сокет отдельно каждое сообщение
как записать?

Старый 06.05.2012, 12:45
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 4  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Вы не поняли. Записать можно. Получить нельзя. То, что ушло несколькими кусками может прийти одним. То, что ушло одним - может прийти несколькими. Разве что делать паузы между отсылкой, ожидая подтверждения от сервера. Но не надо, делайте как выше написал.
Если совсем всё плохо, то XMLSocket попробуйте, там эти все склейки автоматом делаются.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 06.05.2012, 13:50
Давид вне форума Посмотреть профиль Отправить личное сообщение для Давид Найти все сообщения от Давид
  № 5  
Ответить с цитированием
Давид

Регистрация: Apr 2012
Сообщений: 19
можете код дописать для XMLSocket?

Старый 06.05.2012, 14:07
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 6  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Всё не напишу. Смотрите справку.
Для отсылки вместо
Код AS3:
socket.writeUTFBytes('y'+sqr_i.y);
socket.flush();
писать
Код AS3:
socket.send('y'+sqr_i.y);
Для получения подписываться на DataEvent.DATA
Код AS3:
var read_socket=e.data;
PS: не пишите код в кадрах, не пишите код в Flash CS, используйте нормальное форматирование.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 06.05.2012, 14:32
Давид вне форума Посмотреть профиль Отправить личное сообщение для Давид Найти все сообщения от Давид
  № 7  
Ответить с цитированием
Давид

Регистрация: Apr 2012
Сообщений: 19
кто нибудь, дописайте код пожалуйста

Добавлено через 7 часов 41 минуту
Тема актуальна помогитье дописать код с Socket на XMLSocket

Старый 07.05.2012, 11:58
gagaga вне форума Посмотреть профиль Отправить личное сообщение для gagaga Найти все сообщения от gagaga
  № 8  
Ответить с цитированием
gagaga
[+1 22.04.13]
[+1 06.03.13]

Регистрация: Apr 2012
Сообщений: 239
я могу написать за деньги

Старый 07.05.2012, 12:19
Давид вне форума Посмотреть профиль Отправить личное сообщение для Давид Найти все сообщения от Давид
  № 9  
Ответить с цитированием
Давид

Регистрация: Apr 2012
Сообщений: 19
сколько?

Старый 07.05.2012, 12:33
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 10  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Если вы просмотрев справку по XMLSocket (там же пример есть!) и поковыряв его не смогли код выше спортировать - вы не сможете в дальнейшем работать с сокетами.
На сервере таки склеивать пакеты придется один хрен.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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