Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   socket не принимает ответы (http://www.flasher.ru/forum/showthread.php?t=146091)

CJRoman 28.10.2010 19:00

socket не принимает ответы
 
Здравствуйте. Есть такой код:

Код AS3:

 
import flash.display.Sprite;
import flash.events.*;
import flash.net.Socket;
 
var socket:Socket;
socket=new Socket();
 
socket.connect('localhost', 6227);
 
 
socket.writeMultiByte('connected', 'windows-1251');
socket.flush();
socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);
function onSocketData(Event:ProgressEvent):void {
        trace ('1');
}

Он должен прослушивать сообщения, приходящие с клиента. Что я делаю не так? В окне вывода ничего не высвечивается, зато строка connected уходит.

bav 28.10.2010 19:08

Возможно, стоит дождаться события Event.CONNECT, и только после этого вызывать методы writeMultiByte() и flush()?

gloomyBrain 28.10.2010 20:33

Цитата:

Он должен прослушивать сообщения, приходящие с клиента
Эмм... То есть у Вас флешка - это сервер?

CJRoman 29.10.2010 04:41

Ну нет. Флешка - это программа, которая принимает команды от управляющей программы на дельфях. И она должна ответить, что команду приняла и все такое. Так вот отвечать она отвечает, а принимать - нет.

Добавлено через 4 минуты
не срабатывает прослушка socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData); но почему? даже прога на дельфи получает строку.

bav 29.10.2010 10:50

Так, погодите-ка.
Цитата:

И она должна ответить, что команду приняла и все такое. Так вот отвечать она отвечает, а принимать - нет.
Эти два предложения противоречат друг другу. Раз флешка отказывается, как вы говорите, принимать что-либо, на что же она тогда отвечает?
Если вы работаете во FlashDevelop, проверьте режим компиляции (Debug или Release)(можно сделать output из TextField'а и использовать output.appendText("Wow! That's my data!") вместо trace()). Удостоверьтесь также, действительно ли программа на дельфях отправляет данные тогда, когда соединение установлено.

ShockWave512 29.10.2010 14:39

вы ждете ответа сервера ?
с чего вдруг ?
сокет не отвечает за доставку, вы сами должны контролировать ответ

passertm 29.10.2010 17:14

чисто так предположение
а может стоит сначало добавить
Код AS3:

socket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);

а потом писать ?

и что на счет этого варианта?
Цитата:

Возможно, стоит дождаться события Event.CONNECT, и только после этого вызывать методы writeMultiByte() и flush()?

Psycho Tiger 29.10.2010 17:56

Цитата:

Он должен прослушивать сообщения, приходящие с клиента.
Для начала стоит понять, кто такой клиент.

chabapok 29.10.2010 18:39

может вы слишком поздно подписываетесь на событие?
попробуйте подписаться на событие до того, как что-либо слать в сокет.

Psycho Tiger 29.10.2010 18:44

Отправка и получение происходит асинхронно, то есть без разницы. Но подписаться на CONNECT нужно перед тем как что то в сокет класть.


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

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