![]() |
|
||||||||||
|
|||||
|
Регистрация: Nov 2012
Сообщений: 30
|
Люди добрые, объясните мне тупому. Я так говорю потому, что не могу разобраться, как мне кажется в самом простом. Вот цитата
Цитата:
Вопрос один: в каком каталоге должны лежать файлы политики, или как добиться, чтобы флеш их считывала? Извините тупого за тупой вопрос. Очень прошу помочь! Заранее всем огромное спасибо!!! |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 30
|
Пробовал, не помогает. На 843 вообще ноль. Вот код
import java.net.*;
import java.io.*;
class SimpleServer
{
public static void main(String[] args)
{
try
{
System.out.println("-> Security server started...");
ServerSocket server = new ServerSocket(2525);
Socket client;
DataOutputStream out;
DataInputStream in;
// Reading crossdomain.xml
FileInputStream xmlFile = new FileInputStream("crossdomain.xml");
int xmlBytesCount = xmlFile.available();
byte[] xmlBytes = new byte[xmlBytesCount + 1];
xmlFile.read(xmlBytes, 0, xmlBytesCount);
xmlBytes[xmlBytesCount] = 0;
xmlFile.close();
byte[] policyRequest = new byte[23];
// for (;;)
// {
client = server.accept();
out = new DataOutputStream(client.getOutputStream());
in = new DataInputStream(client.getInputStream());
in.read(policyRequest, 0, 23);
out.write(xmlBytes, 0, xmlBytesCount + 1);
out.flush();
System.out.println(":: FSS :: Policy sended to " + client.toString());
client.close();
// }
}
catch (Exception e)
{
e.printStackTrace();
}
int port = 8080; // случайный порт (может быть любое число от 1025 до 65535)
SimpleServer(port);
}
static ServerSocket socket;
static Socket incoming;
static BufferedReader readerIn;
static PrintStream printOut;
private static void SimpleServer(int port)
{
System.out.println(">> Starting SimpleServer");
try
{
socket = new ServerSocket(port);
incoming = socket.accept();
readerIn = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
printOut = new PrintStream(incoming.getOutputStream());
out("Enter EXIT to exit.\r");
boolean done = false;
while (!done)
{
String str = readerIn.readLine();
if (str == null)
{
done = true;
}
else
{
out("Echo: " + str + (char)0 + "\r");
if(str.trim().equals("EXIT"))
{
done = true;
}
}
}
incoming.close();
}
catch (Exception e)
{
System.out.println(e);
}
}
private static void out(String str)
{
System.out.println(str);
printOut.println(str);
printOut.flush();
}
}
|
|
|||||
|
Здесь форум по флешу, раздел по as3, а не java.
При беглом осмотре кода я вообще не вижу, где там создается сокет на 843 порту. Добавлено через 7 минут Маленький ликбез по устройству серверной части. Значит, сервер состоит из двух частей: сокет на вашем порту, к которому коннектятся флешки; сокет на 843 (по умолчанию) порту, куда ломятся все клиенты неявно для Вас и просят файл политики безопасности. Как только вы отослали по основному порту какую-то информацию, флешплеер лезет на 843 порт сервера и отсылает строку (я указал в посте, куда ссылка ведет). В ответ он ждет строку-ответ с нулевым байтом в конце. И, если он ее получает и она валидная, то дальше клиент по основному порту работает как надо без каких-либо секьюрити-ошибок. В общем, как только любой клиент подключился к 843 порту, сервер отсылает ему строку на запрос, после чего смело отрубает коннект, ибо сокет дальше здесь держать нет смысла, он нужен только для аутентификации, так сказать. В этом плане мне на Java понравилась библиотека netty, на которой очень быстро и просто создать вменяемый сервер.
__________________
тут я |
|
|||||
|
Регистрация: Nov 2012
Сообщений: 30
|
Спасибо.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 12:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|