Связь между Flex и Java Socket - PullRequest
1 голос
/ 19 мая 2011

У меня есть приложение Flex AIR, и я пытаюсь получить данные с сервера Java. Может кто-нибудь сказать мне, если этот подход будет работать?

Запустите ServerSocket в Java и дождитесь соединения.
Используйте Flex для подключения к тому же порту.
Записать некоторые данные в сокет с Java Server.
Прочитайте данные в конце Flex и обработайте их.

- Обновить : Я думаю, что могу заставить это работать, но данные, которые я прочитал обратно в конец Flex, кажутся пустыми.

Код моего сервера:

        socket  = new ServerSocket(port);
        client  = socket.accept();

        InetAddress address = client.getInetAddress();           

        BufferedReader in = new BufferedReader( new InputStreamReader(
                client.getInputStream()));
        PrintWriter out = new PrintWriter(client.getOutputStream());            

        out.println("hi");
        out.flush();

А мой код на Flex это

        private function onRecieveDataClick():void
        {
            var host:String = "127.0.0.1";
            var port:int = 9090;

            var socket:Socket = new Socket();
            socket.endian = Endian.BIG_ENDIAN;
            socket.addEventListener(Event.CONNECT, onConnect);
            socket.connect(host, port);
        }

        private function onConnect(event:Event):void
        {
            trace(" Connected to server socket ");
            var socket:Socket = Socket(event.target);
            var obj:String = socket.readUTFBytes( socket.bytesAvailable);
            trace(obj);
        }

Моя текущая проблема - socket.bytesAvailable становится 0, и поэтому obj выглядит как "". Так как же прочитать данные, отправленные с сервера, используя Socket во Flex?

1 Ответ

2 голосов
/ 20 мая 2011

После некоторого базового поиска в Google я нашел сообщение в блоге, которое в точности соответствует тому, что вы описываете: http://arthurnn.com/blog/2010/12/09/socket-connection-beteween-flex-air-and-java/

Однако в этом примере приложение java запускается на локальном хосте, а не удаленно, как вы описали. Поэтому может случиться так, что вы столкнетесь с некоторыми нарушениями песочницы при попытке подключения к сокету удаленного сервера. Эту проблему можно решить, добавив файл crossdomain.xml в корень сервера приложений java.

На самом деле, это сообщение в блоге - элементарный пример того, что мерапи делает под капотом.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...