Уже десять дней топчусь во круг сщкетов. Не ни кто не может помочь? Я перепробовал все выше предлагаемые варианты, но эффекта - 0.
Вот все мои коды:
Сервер
Код:
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 = 4444; // случайный порт (может быть любое число от 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);
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();
}
}
Файл политики:
Код:
i<?xml version="1.0"?>
<!-- http://www.foo.com/crossdomain.xml -->
<cross-domain-policy>
<allow-access-from domain="127.0.0.1" to-ports="4444" />
</cross-domain-policy>
И флеш:
Код AS3:
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.net.XMLSocket;
import flash.text.TextField;
stop();
var userloader:URLLoader = new URLLoader();
var userrequest:URLRequest = new URLRequest("user.xml");
userloader.load(userrequest);
userrequest.data;
userloader.addEventListener(Event.COMPLETE, onUserLoad);
var xml:XML = new XML;
var userLogin:XMLList;
var userPaswurd:XMLList;
var username:Array = new Array();
var pasword:Array = new Array();
var i:int;
var j:int;
function onUserLoad(e:Event):void
{
xml = XML(e.target.data);
userLogin = xml..user_login.text();
userPaswurd = xml..user_password.text();
for(i = 0; i < userLogin.length(); i++)
{
username.push(userLogin[i]);
}
for(j = 0; j < userPaswurd.length(); j++)
{
pasword.push(userPaswurd[j]);
}
}
var configloader:URLLoader = new URLLoader();
var configrequest:URLRequest = new URLRequest("configuration.xml");
configloader.load(configrequest);
configloader.addEventListener(Event.COMPLETE, onSocketConfig);
var socketconfig:XML;
var sockethost:XMLList;
var socketport:XMLList;
function onSocketConfig(e:Event):void
{
socketconfig = XML (e.target.data);
sockethost = socketconfig..socket_host.text();
socketport = socketconfig..socket_port.text();
}
var ports:Number = 4444;
var xmlsocket:XMLSocket = new XMLSocket("127.0.0.1", ports);
var textFields:TextField = new TextField();
xmlsocket.addEventListener(Event.CLOSE, closeSocket);
xmlsocket.addEventListener(Event.CONNECT, connectSocket);
xmlsocket.addEventListener(DataEvent.DATA, dataSocket);
xmlsocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorSocket);
xmlsocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorSocket);
enter_page.addEventListener(MouseEvent.CLICK, onEnter);
function onEnter(e:MouseEvent):void
{
var logins:String = logins.text;
var paswords:String = paswords.text;
var categories:String = categories.text;
var k:int;
var l:int;
if(logins == "" || paswords == "")
{
trace(enter_status.text = ("Ошибка! Не заполнены поля"));
return;
}
for(k = 0; k < username.length; k++)
{
if(logins == username[k])
{
for(l = 0; l < pasword.length; l++)
{
if(paswords == pasword[l])
{
xmlsocket.connect("127.0.0.1", 2525);
try
{
Security.loadPolicyFile("xmlsocket://127.0.0.1:2525");
}
catch(e:Error)
{
textFields.appendText("\n Нет файла политики! \n");
}
xmlsocket.connect("127.0.0.1",ports);
if(true)
{
MovieClip(this.root).gotoAndStop(1, "Монтажный кадр 6");
}
}
}
}
}
if(logins != username[k] || paswords != pasword[l])
{
trace(enter_status.text = ("Не верный логин или пароль."));
return;
}
}
function closeSocket(event:Event):void
{
trace("\ncloseHandler: \n" + event);
}
function connectSocket(event:Event):void
{
trace("\nconnectHandler: \n" + event);
xmlsocket.send("test\n");
trace("data sending...\n");
}
function dataSocket(event:DataEvent):void
{
trace("\ndataHandler: \n" + event);
}
function ioErrorSocket(event:IOErrorEvent):void
{
trace("\nioErrorHandler: \n" + event);
}
function securityErrorSocket(event:SecurityErrorEvent):void
{
trace("\nsecurityErrorHandler: \n" + event);
}
reminder.addEventListener(MouseEvent.CLICK, onreminder);
function onreminder(e:MouseEvent):void
{
gotoAndStop(2);
}
А это вывод:
Код:
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."]
Кто может помогите разобраться пожалуйста!