Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Обработка сокетов (http://www.flasher.ru/forum/showthread.php?t=188086)

client510 05.12.2012 12:37

Снова переписал все заново. Прописал 843 порт. Как и раньше, эффект нолевой! Что делать дальше?

Добавлено через 4 часа 17 минут
Алло-о-о! Есть кто-то из супер спецов на этом форуме? На протяжение шести часов, еще раз, прочитал кучу статей, а эту почти выучили на из уч, просмотрел десяток видео, Перепробовал все ваши советы - результата 0! Может проблема в сервере? Ребята, у кого-то есть рабочий сервер? Выложите пожалуйста код. Я брал здесь и тут, но не на одном не работает.

Добавлено через 5 часов 2 минуты
Кстати, ни одна из этих команд :
Цитата:

Чтобы запустить сервер XMLSocket, откройте командную строку и введите java SimpleServer. Файл SimpleServer.class может находиться в любом месте на локальном или сетевом компьютере. Его не обязательно сохранять в корневом каталоге веб-сервера.

Если сервер запустить не удается из-за того, что файлы находятся не в пути к классам Java, попробуйте запустить сервер с помощью java -classpath . SimpleServer.
на моем компьютере не выполняются.

maxkar 06.12.2012 01:26

А с какой ошибкой ваша команда не выполняется? Может, там javac нужно запустить. Или доступа к портам нет.

Вообще, я не понимаю, откуда у кучи народа (не только у вас) возникают проблемы с сокет-серверами. Если разбираться в технологии и все делать строго по спеке, никаких проблем нет.

Код:

import java.io.*;
import java.net.*;

public class SS {
        private static final String POLICY_FILE_RESPONCE =
                "<cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\"/></cross-domain-policy>";
        public static void main(String [] args) throws Exception {
                final ServerSocket ss = new ServerSocket(3128);
                while (true) {
                        final Socket s = ss.accept();
                        new Thread(new Runnable() {
                                @Override
                                public void run() {
                                        handles(s);
                                }
                        }).start();
                }
        }

        static void handles(Socket s) {
                System.out.println("Client!");
                try {
                        final InputStream is = new BufferedInputStream(s.getInputStream());
                        final OutputStream os = s.getOutputStream();
                        boolean first = true;
                        boolean die = false;
                        do {
                                final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
                                int readed;
                                while ((readed = is.read()) > 0)  {
                                        buffer.write(readed);
                                }
                                final byte[] bytes = buffer.toByteArray();
                                final String dummyContent = new String(bytes, "UTF-8");
                                System.out.println(dummyContent);
                                if ("<policy-file-request/>".equals(dummyContent) && first) {
                                        os.write(POLICY_FILE_RESPONCE.getBytes("UTF-8"));
                                        os.write(0);
                                        die = true;
                                }
                                first = false;
                                if (readed == -1)
                                        die = true;
                                if ("<quit/>".equals(dummyContent)) {
                                        die = true;
                                }
                                os.write(bytes);
                                os.write(0);
                        } while (!die);
                        s.shutdownOutput();
                        s.close();
                        System.out.println("Good buy, cruel world!");
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}

Код AS3:

package {
import flash.display.*;
import flash.text.*;
import flash.geom.*;
import flash.net.*;
import flash.events.*;
import flash.system.*;
public class Test extends Sprite {
  const tf : TextField = new TextField();
  var sock : XMLSocket;
  public function Test() {
        Security.loadPolicyFile("xmlsocket://127.0.0.1:3128");
        sock = new XMLSocket("127.0.0.1", 3128);
        sock.addEventListener(Event.CONNECT, connected);
        sock.addEventListener(DataEvent.DATA, receive);
        addChild(tf);
  }
 
  private function connected(e : Event) : void {
    tf.text = "COnnected";
        sock.send(<test/>);
  }
 
  private function receive(e : DataEvent) : void {
          tf.text = e.data.toString();
        sock.send(<quit/>);
  }
}
}

Вот. Рабочее. Проверялось. Импорты в as от другого теста остались. Импорты со * потому, что писалось все в vim'е а не в IDE. Если и оно у вас не заработает, по шагам пишите, что именно вы делали и какие ошибки на каких шагах выдавались.

Обработка исключений не совсем правильная (для примера - пойдет, в production close нужно в finally делать). Запись в два приема (нулевой байт отдельно) тоже может быть не очень для production (учитывая, что у вас вообще не работает - без разницы).

client510 06.12.2012 01:41

Пробавал по разному, но ошибка одна и та же:
Цитата:

ioErrorHandler:
[IOErrorEvent type="ioError" bubbles=false cancelable=false eventPhase=2 text="Error #2031: Ошибка сокета. URL: 127.0.0.1"]

securityErrorHandler:
[SecurityErrorEvent type="securityError" bubbles=false cancelable=false eventPhase=2 text="Error #2048: Нарушение изолированной среды: file:///E|/WebServers2/home/videochat/www/avfc%5F1%5F0.swf не может загрузить данные из 127.0.0.1:4444."]
Спасибо за пример, буду пробовать.


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

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