netyyサーバー用のフラッシュバイナリソケットクライアントを作成するように指示することができますか?
質問する
564 次
1 に答える
0
ネット上でこれの多くの例を見つけることができますが、とにかくここにいくつかのコードのヒントを貼り付けます。
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 connect\n");
}
}
于 2012-04-21T03:48:54.937 に答える