![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2011
Сообщений: 4
|
Никак не могу решить проблему соединения сервера на 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, время: 06:06. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| Action script 3.0 , flash , java , socket |
|
|