|
|
|||||
Регистрация: Aug 2011
Сообщений: 4
|
Сокет соединение Java + AS3
Никак не могу решить проблему соединения сервера на Java и ActionScript 3.0
Вот код сервера на java (взят с хэлпа Adobe, и немного видоизменен, но незначительно), компилируется в Eclipse import java.io.*; import java.net.*; class SimpleServer { private static SimpleServer server; ServerSocket socket; Socket incoming; BufferedReader readerIn; PrintStream printOut; public static void main(String[] args) { int port = 8080; server = new SimpleServer(port); } private 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 + "\r"); if(str.trim().equals("EXIT")) { done = true; } } } incoming.close(); } catch (Exception e) { System.out.println(e); } } private void out(String str) { System.out.println(str); printOut.println(str); printOut.flush(); } } package MultiPlayer { import flash.display.Sprite; import flash.events.DataEvent; import flash.events.Event; import flash.events.ProgressEvent; import flash.net.*; import flash.text.TextField; public class MultiPlayer extends Sprite { private var port:Number = 8080; private var socket:XMLSocket = new XMLSocket("127.0.0.1",port); private var textField:TextField = new TextField(); public function MultiPlayer() { textField.height = 300; textField.width = 600; textField.x = 100; textField.y = 100; textField.backgroundColor = 0x00ff00; textField.background = true; this.addChild(textField); socket.addEventListener(Event.CONNECT, onConnect ); socket.addEventListener(Event.CLOSE,onClose); socket.addEventListener(DataEvent.DATA, onSocketData); socket.connect("127.0.0.1",port); } private function onConnect( event:Event ):void { textField.appendText("Соединение для передачи установлено...\n"); } private function onClose( event:Event ):void { textField.appendText("Соединение для передачи прервано...\n"); } private function onSocketData( event:DataEvent ):void { textField.appendText("poly4eno [" + event.type + "] " + event.data); try { socket.send("test\n"); textField.appendText("data sending...\n"); } catch(e:Error) { textField.appendText("fail...\n"); } } } } Возможно проблема с файлом политики XMLсокет соединения. Потому что его просто нет. Я никак не могу понять куда его надо поместить, что бы его автоматически загрузило. Либо, где этот файл должен находиться, что бы можно было написать: я сделал файл crossdomain.xml с текстом: <?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" to-ports="*" /> </cross-domain-policy> и ещё: если закоментить ту часть, де идет цикл, то функция out срабатывает, но данные не передаются в AS3. Если кто-то сталкивался с этими проблемами, можете выложить работающие исходники? |
Часовой пояс GMT +4, время: 01:31. |
|
« Предыдущая тема | Следующая тема » |
Теги |
Action script 3.0 , flash , java , socket |
|
|