闪存二进制套接字与网络通信



有人可以指出我为netyy服务器制作一个flash二进制套接字客户端吗?

你可以在网上找到很多这样的例子,无论如何,在这里粘贴一些代码花絮。

import flash.net.Socket;
private var remoteHost:String;
private var portNumber:int;
// Create a new Socket object and assign event listeners.
socket = new Socket();
socket.addEventListener(Event.CONNECT, connectHandler);
socket.addEventListener(Event.CLOSE, closeHandler);
socket.addEventListener(ErrorEvent.ERROR, errorHandler);
socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

连接到netty服务器的函数

public function connect():Boolean
    {
        // Load policy file from remote server.
        //Security.loadPolicyFile("xmlsocket://" + remoteHost + ":" + policyPort);
        // Attempt to connect to remote socket server.
        try {
            trace("Trying to connect to " + remoteHost + ":" + portNumber + "n");
            socket.connect(remoteHost, portNumber);
        } catch (error:Error) {
            /*
                Unable to connect to remote server, display error 
                message and close connection.
            */
            trace(error.message + "n");
            socket.close();
            return false;
        }
        return true;
    }

对我创建的 netty 游戏服务器执行登录功能的函数。您可以忽略登录等,只是想显示它如何与netty一起工作。要查看实际的 Java 游戏服务器代码,请转到提供的 github 链接。

    private function connectHandler(event:Event):void {
        if (socket.connected) {
            socket.addEventListener(ProgressEvent.SOCKET_DATA, loginHandler);
                    var payLoad:ByteArray = new ByteArray();
            payLoad.writeByte(LOG_IN);//opcode sent back to netty server in my implementation
            payLoad.writeBytes(encodeMultiStrings(user, pass, roomName));// credentials
            trace("Payload length before encode is: " + payLoad.length);
            var login:ByteArray = encodeBytes(payLoad);
            trace ("Login bytes length: " + login.length);
            writeBytesToSocket(login);
        }else {
            trace("unable to connectn");
        }
    }

最新更新