`
wgcode
  • 浏览: 577258 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

AS和Java的Rpg开发

    博客分类:
  • Java
阅读更多

测试下怎么都可以,发布成exe文件,也没有任何问题,但是以html访问swf的方式连接,却总是连不上,出现Error #2048 的SecurityErrorEvent 错误信息
然后,就在java那头加了接收<policy-file-request/>的代码,但是还是不行,现在我把代码贴上来,请大家帮帮忙
java服务器
RPGServer.java

import java.net.*;
import java.io.*;
import java.util.*;

public class RPGServer {

        private ServerSocket server;
        private Boolean serverStop = true;
        private RPGManager bMan = new RPGManager();
        private int ServerCount = 0;
        private HashMap userList = new HashMap();
        private HashMap userNameList = new HashMap();

        public RPGServer() {
        }

        void startServer() {
                try {
                        server = new ServerSocket(10000);
                        System.out.println("RPGServer 建て終わりました");
                        while (true) {
                                Socket socket = server.accept();
                                Chat_Thread chatThread = new Chat_Thread(socket, "socket"
                                                + ServerCount);
                                chatThread.start();
                                userList.put("socket" + ServerCount, chatThread);
                                bMan.add(socket);
                                bMan.sendToSocket(socket, "socketId:socket" + (ServerCount++));
                                bMan.sendClientInfo();
                        }
                } catch (Exception e) {
                        System.out.println(e);
                }
        }

        public static void main(String[] args) {
                RPGServer server = new RPGServer();
                server.startServer();
        }

        class Chat_Thread extends Thread {
                String msg;
                Socket socket;
                String socketId;
                String socketName;
                int x;
                int y;

                private BufferedReader reader;
                // private PrintWriter writer;
                private BufferedWriter writer;
                private String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "<cross-domain-policy>" +
                        "<allow-access-from domain='*' to-ports='*' />" + "</cross-domain-policy>";
                Chat_Thread(Socket socket) {
                        this.socket = socket;
                }

                Chat_Thread(Socket socket, String socketidvalue) {
                        this.socket = socket;
                        this.socketId = socketidvalue;
                }

                public void run() {
                        try {
                                reader = new BufferedReader(new InputStreamReader(socket
                                                .getInputStream(), "utf8"));
                                writer = new BufferedWriter(new OutputStreamWriter(socket
                                                .getOutputStream(), "UTF-8"));
                                // writer=new PrintWriter(socket.getOutputStream(),true);
                                // String msg;
                                while ((msg = reader.readLine()) != null) {
                                        System.out.println("RPGServer run msg = " + msg + msg.compareTo("<policy-file-request/>"));
                                        if(msg.compareTo("<policy-file-request/>") == 1){
                                                System.out.println("RPGServer run ");
                                                writer.write(xml + "\0");
                                                writer.flush();
                                        }else if (msg.compareTo("stop") == 0) {
                                                System.out.println("stop");
                                                serverStop = false;
                                                server.close();
                                        }
                                }
                        } catch (Exception e) {
                                e.printStackTrace();
                                System.out.println(e.getMessage());
                        } finally {
                                try {
                                        bMan.remove(socket);
                                        if (reader != null)
                                                reader.close();
                                        if (writer != null)
                                                writer.close();
                                        if (socket != null)
                                                socket.close();
                                        reader = null;
                                        writer = null;
                                        socket = null;
                                        userNameList.remove(socketName);
                                        userList.remove(socketId);
                                        bMan.sendToAll("deleteuser:" + socketName);
                                        System.out.println("お客様離れました");
                                        bMan.sendClientInfo();
                                        if (msg.compareTo("stop") == 0) {
                                                System.out.println("stop");
                                                // serverStop = false;
                                                server.close();
                                        }
                                } catch (Exception e) {
                                }
                        }

                }
        }
}

class RPGManager extends Vector {
        RPGManager() {
        }

        void add(Socket sock) {
                System.out.println("add sock : " + sock);
                super.add(sock);
        }

        void remove(Socket sock) {
                super.remove(sock);
        }

        synchronized void sendToSocket(Socket sock, String msg) {
                System.out.println("sendToSocket sock : " + sock);
                BufferedWriter writer = null;
                try {
                        writer = new BufferedWriter(new OutputStreamWriter(sock
                                        .getOutputStream(), "UTF-8"));
                        if (writer != null) {
                                writer.write(msg);
                                writer.flush();
                        }
                } catch (Exception ie) {
                }
        }

        synchronized void sendToAll(String msg) {
                System.out.println("sendToAll run = " + msg);
                // PrintWriter writer=null;
                BufferedWriter writer = null;
                Socket sock;
                for (int i = 0; i < size(); i++) {
                        sock = (Socket) elementAt(i);
                        try {
                                writer = new BufferedWriter(new OutputStreamWriter(sock
                                                .getOutputStream(), "UTF-8"));
                                if (writer != null) {
                                        writer.write(msg);
                                        writer.flush();
                                }
                                // writer=new PrintWriter(sock.getOutputStream(),true);
                        } catch (Exception ie) {
                        }

                }
        }

        synchronized void sendClientInfo() {
                String info = ":今の人数:" + size();
                System.out.println(info);
                sendToAll(info);
        }
}
 as方面
                public function con():void{
                        socket=new Socket();
                        socket.addEventListener(Event.CONNECT,onConnect, false, 0, true);//注册侦听函数
                        socket.addEventListener( IOErrorEvent.IO_ERROR , failConnect , false, 0, true);
                        socket.addEventListener(Event.CLOSE,funClose); //监听连接关闭   
                
                        socket.addEventListener( ProgressEvent.SOCKET_DATA, onSocketData );
                        
                        socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError, false, 0, true);
                        //socket.connect("127.0.0.1",10000);//连接Socket服务器
                        socket.connect("localhost",10000);//连接Socket服务器
                }
                private function connect():void {
                          socket.writeUTFBytes("login:" +_player.name + "\n");
                          socket.flush( );
                }
                   private function funClose(e:Event):void{
                        _worldTextBox.text =_worldTextBox.text + "\n" +"服务器关闭";
                        trace("服务器关闭");
                   }
                   private function onConnect(e:Event):void{
                        _worldTextBox.text =_worldTextBox.text + "\n" +"服务器已经连接,正在验证用户";
                  }

                   private function failConnect(ev:IOErrorEvent):void{
                        trace("error");  
                }
                   private function onSocketData( event:ProgressEvent ):void {
                        //trace( "Socket received " + socket.bytesAvailable + " byte(s) of data:" );
                        _worldTextBox.text =_worldTextBox.text + "\n" + "Socket received " + socket.bytesAvailable + " byte(s) of data:";
                        while ( socket.bytesAvailable ) {
                        
                                var string:String = socket.readUTFBytes(socket.bytesAvailable);
                        _worldTextBox.text =_worldTextBox.text + "\n" + string;
                                trace( "GameMap onSocketData string : " + string);
                        }
        }
                private function onSecurityError(evt:SecurityErrorEvent):void
                {
                        _worldTextBox.text =_worldTextBox.text + "\n" +"安全错误" + evt.toString() + "\n" + evt.text;
                }
                private function onClosed(evt:Event):void
                {
                        _worldTextBox.text =_worldTextBox.text + "\n" +"服务器关闭";
                }
 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics