Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Socket server для Flash приложений


Автор: ОВиталий 30.8.2010, 22:30
Здравствуйте. делаю сокет-сервер для флеш-приложений. Используя библиотеку java.nio.*.
при переносе на сервер, приложения запрашивает файл политики <policy-file-request/>. что бы передался файл, соединение надо закрыть. 

Код

private void writePolicy(User u) throws IOException {
        ByteBuffer byteBuffer = u.bb;
        byteBuffer.clear();
        byteBuffer.put((POLICY_XML).getBytes());
        byteBuffer.position(0);
        byteBuffer.limit(POLICY_XML.length());
        SocketChannel socketChannel = (SocketChannel) u.sk.channel();
        socketChannel.write(u.bb);
        while (u.bb.position() < u.bb.limit()) {
        }
        socketChannel.close();
}


как его заново открыть????

Автор: Sartorius 30.8.2010, 22:33
 А зачем его открывать? Flash запросил файл политики больше ему от этого порта на вашем сервере ничего не нужно. Ну а основная работа на другом порту же у вас идет...

Автор: ОВиталий 31.8.2010, 21:03
Цитата

Ну а основная работа на другом порту же у вас идет... 


попробую сделать на разных портах

Автор: ОВиталий 7.9.2010, 21:34
а как на одном сокет-канале открыть 2 порта?

Автор: ОВиталий 8.9.2010, 20:23
уже понял

Автор: SDA 26.11.2010, 23:06
Извините, что припозднился, а можно по подробнее? smile 

я тут тему не в той ветке создал, поэтому прошу прощения, но хочу задать этот же вопрос в этой же теме, можно?  smile 

помогите подключить Flash к java серверу
Точнее объясните мне, как правильно.

Известно, что при подключении через сокеты Флешьплеер шлет строку
<policy-file-request/> с \нулевым байтом в конце, на что сервер должен ответить XML строкой, после этого, сервер должен разорвать соединение с Флешьплеером, и если ответ посланный сервером удовлетворяет требованиям Флешьплеера, то Флешьплеер снова подключается и работает в обычном режиме подключения.

я уже и так и так пробовал, как правильно разорвать соединение? 

Выделить всёкод Java

Код
    
while(runs) {
           String ClientString = ins.readLine();
           
           String FlashT = "<policy-file-request/>\0";
           
           if(ClientString.equals(FlashT)){
               String Reply_f = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\"/></cross-domain-policy>\0";
               outs.write(Reply_f);
               outs.newLine();
               outs.flush();
               //ins.close();
               //outs.close();
              // ClSocket.close();
               runs = false;
           }


по сути нужно останавливать поток? 
Странное дело, с сервером который написан на С++ по такому принципу все работает.. Хотя с потоками я работаю только в java.. Подскажите, что не так?  smile 

Автор: LSD 29.11.2010, 19:25
А если под дебагером запустить, что показывает?

Автор: SDA 29.11.2010, 20:48
все, спасибо, я разобрался..  smile дело не в коде.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)