Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передача данных с помощью сокетов. (http://www.flasher.ru/forum/showthread.php?t=182429)

lispo 23.07.2012 02:55

Передача данных с помощью сокетов.
 
Начал копать в сторону клиент-серверного взаимодействия flash и сразу же столкнулся с проблемой корректной передачи данных. В качестве сервера использую C#.
Во flash пытаюсь передать данные на сервер, используя сокет:

Код AS3:

socket.addEventListener(Event.CONNECT, onConnect);// слушатель на события коннекта с сокетом сервера
socket.connect('127.0.0.1', 8888); //подключаюсь
    private function onConnect(e:Event):void { //тут данные нормально передаются на сервер и отображаются
    socket.writeUTFBytes("Hello!");               
}

Но стоит как-то иначе попытаться передать данные и ничего не происходит...Например:

Код AS3:

        private function onPress(e:KeyboardEvent):void {
                        if (e.keyCode == 37) {socket.writeUTFBytes("37");}
                        if (e.keyCode == 38) {socket.writeUTFBytes("38");}
                        if (e.keyCode == 39) {socket.writeUTFBytes("38");}
                        if (e.keyCode == 40) {socket.writeUTFBytes("38");}
                }

Это мне получается все взаимодействие с сокетом писать в onConnect? Или каким образом, через другие функции можно отправлять данные на сервер?

Inet_PC 23.07.2012 09:16

Не получится ничего записать в сокет, пока он не подключится. Писать весь код в onConnect совсем не обязательно. Можно сделать очередь из сообщений, и если сокет не подключен, то складывать эти сообщения в массив, а по подключению отправить их все. Или просто вообще ничего не отправлять пока сокет не соединится.

Krusty 23.07.2012 13:55

в дополнение.
Код AS3:

var socket:Socket;
socket.connected// Boolean свойство,  отвечающее за состояние подсоединения.

соответственно, ждете Event.CONNECT, проверяете socker.connected, что не отвалилось соединение.
Код AS3:

socket.writeBytes(bytes);
socket.flush();

не забываем делать flush output буферу.

КорДум 23.07.2012 14:13

Ну я просто обязан попиариться =)
http://www.flasher.ru/forum/blog.php?b=579

lispo 23.07.2012 20:44

Всем огромное спасибо! Все стало понятно) Статьи КорДума очень помогли!) Очень все доходчиво там рассказано про сокеты. Избавили от часов гугления)


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

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