博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
网游练习总结(2)
阅读量:5128 次
发布时间:2019-06-13

本文共 6957 字,大约阅读时间需要 23 分钟。

php获取js变量:document.write(string);

$name="        ";//其实这样是得到了变量,但也其实是一个啰嗦,可以直接用$_GET['KEY']得到。

AS3.0获取php变量

//------signClass-------//加载目标php文件函数:private function loaded(event:Event):void        {            if(this.data.strings)            {                var str:String=this.data.strings;                var arr=this.data.strings.split("
"); trace(arr[0].split("name=")[1]); trace(arr[1].split("pasd=")[1]); trace(arr[2].split("mail=")[1]); trace(arr[3].split("sign=")[1]); if(arr[3].split("sign=")[1]=="succeed") { this.isSign=true; info=Singleton.GetSingleton(UserInfo as Class); info.user_pswd=arr[1].split("pasd=")[1]; info.userEmail=arr[2].split("mail=")[1]; info.userName =arr[0].split("name=")[1]; this.father.SIGNED=this.father.STATES["succeed"]; }else if(arr[3].split("sign=")[1]=="faild"){ trace("运行到此处"); this.isSign=false; this.father.SIGNED=this.father.STATES["faild"]; }else { trace("unormal"); this.father.SIGNED=this.father.STATES["error"]; } } //trace(this.isSign); }
$sql="SELECT * FROM chinesechess WHERE user_email='{$_email}'and password='{$_paswd}' and isActivated='{$_activate}'";    $result = mysql_query($sql,$con);    $source=mysql_fetch_array($result);        if($source)    {         $sign="succeed";                 $name=$source['nickname'];             $pasd=$source['password'];             $mail=$source['user_email'];             }else    {         $sign="faild";                 $name="null";             $pasd="null";             $mail="null@cn.com";                             }        echo 'strings=name='.$name.'
'; echo 'pasd='.$pasd.'
'; echo 'mail='.$mail.'
'; echo 'sign='.$sign.'
';

as3.0获取后台数据必须以后台输出的键值对的明文来获取。

php获取AS3.0变量

/*         *@function :  public   signClass  构造函数         *@parameter:         *  path      String    php文件路径             *  obj       Main      Main类         *  email     String    邮件字符串    "NULL"         *  password  String    密码字符串    "1234"         */        public function signClass(path:String,obj:Sign_mc,email:String="NULL",password:String="1234")        {            this.father=obj;                        _var=new URLVariables();            request=new URLRequest(path);            request.method=URLRequestMethod.POST;                        _var._email=email;            _var._pasd=password;                        request.data=_var;            this.dataFormat = URLLoaderDataFormat.VARIABLES;              this.load(request);            this.addEventListener(Event.COMPLETE,loaded);            //trace(password);        }

AS3.0客户端通过 URLVariables对象就值以URLRequest的method=URLRequestMethod.POST方法发送给php,php端直接使用$_POST['_email']获取到就OK。

phpMyAdmin中设置主键和A_I:在新建数据表里面其实就可以设置A_I,但是好像并没有找到设置主键的钥匙按钮,后来才发现是我的数据里面的[结构]那一栏不知道为什么总是打不开,偶然打开了一次,设置主键的按钮在这一栏中,真是害得我好苦。然后就是不知道怎么处理数据插入失败后再次插入成功的时候主键增长的时候回将失败的次数也计算在里面,最后我在php端直接将失败的的操作该屏蔽掉了才解决了这个问题,但我想应该有更好的办法吧。

 

二.服务器端:

游戏服务器其实是我借用别人的,只是在基础上根据自己需要修改了一些。

1.swf客户端连接到服务端:相信swf客户端连接到服务端好多人都很头疼,我在好几个flash群里面遇到过好多关于安全沙箱问题,以及socket连接。其实只要安全策略文件配置正确一般都没有问题,还有会提示打开843端口的情况,是本地默认关闭这个端口造成的。在 本地防火墙->高级设置->进站规则->新建规则 里面可以添加自己允许的端口号。

as3.0 socket连接到java服务端

//ServerThread .javapackage com.feiruo.Chess;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class ServerThread extends Thread{     Server       father;     boolean      tag=true;     String       xmlString="
"; ServerSocket ss; public ServerThread(Server server) { this.father=server; this.ss=father.ss; this.xmlString="
" + "" + "
" + "
" + "
\0"; } public void run() { while (this.tag) { try { //等待连接: Socket sc=ss.accept(); BufferedReader br = new BufferedReader(new InputStreamReader(sc.getInputStream())); PrintWriter pw = new PrintWriter(sc.getOutputStream()); char[] by = new char[22]; br.read(by,0,22); String msghead = new String(by); // System.out.println(msghead); if (msghead.startsWith("
")) { pw.print(this.xmlString); pw.flush(); } else { //开启代理线程 ServerAgentThread sat=new ServerAgentThread(this.father, sc); // System.out.println("已发送"); sat.start(); sat.dou.writeUTF("<#CONNECTED#>"); sat.dou.flush(); sat.tag=true; // System.out.println("IP:"+sc.getInetAddress()); } } catch (Exception e) { this.tag=false; } } }}

检测客户端是否断开连接

//检测出客户端是否断网或者离线            try {                 sc.sendUrgentData(0);                 } catch (IOException e)                 {                     this.client_leave("<#CLIENT_LEAVE#>"+this.getName());                    tag=false;//终止该服务器代理线程                }

sendUrgentData方法会往输出流发送一个字节的数据,只要对方Socket的SO_OOBINLINE属性没有打开,就会自动舍弃这个字节,而SO_OOBINLINE属性默认情况下就是关闭的。

 AS3.0使用setTimeout判断socket连接超时

private var isResponsed:Boolean=false; ...... setTimeoutHandlerId=setTimeout(                                  function():void                                  {                                         if(!isResponsed)                                       {                                             this.ERROR="网络连接超时,\n请重新尝试!";                                         }                                     },timeoutMs); this.addEventListener(Event.CONNECT,haveConnected);......private function setReponsedHandler(event:Event):void{       isResponsed=true;       clearTimeout(setTimeoutHandlerId);  }......public function haveConnected(event:Event):void{                 clearTimeout(setTimeoutHandlerId);      this.flush();}

2.数据传送

AS3.0读取服务器数据:这里可能遇到的问题就是读取数据遇到文件尾。起初我使用的是Socket.readUTFBytes(Socket.bytesAvailable);但是会发现读取的数据是读取完了,但是在给临时变量赋值的时候字符串是断断续续的,以至于后面对数据的分析和判断不怎么好进行操作。我也先把数据存起来等它全部读完之后再合并之后进行分析操作,但是感觉这样好繁琐。最后选用了Socket.readUTF()方法,但是会有遇到文件尾问题,于是自己也百度了许多,但看到的方法感觉并不怎么适合自己,最后我想既然是遇到文件尾,肯定是我对数据发送时处理的不恰当,最后发现我在java客户端发送数据之后都没有清空的原因。真表示马虎。DataOutputStream.flush();

 

转载于:https://www.cnblogs.com/feiruo/p/5102097.html

你可能感兴趣的文章
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
Linux 普通用户拿到root权限及使用szrz命令上传下载文件
查看>>
人物角色群体攻击判定(一)
查看>>
JavaWeb学习过程 之c3p0的使用
查看>>
MySql Delimiter
查看>>
一步步学习微软InfoPath2010和SP2010--第九章节--使用SharePoint用户配置文件Web service(2)--在事件注册表单上创建表单加载规则...
查看>>
使用客户端对象模型读取SharePoint列表数据
查看>>
POJ 1328 Radar Installation 贪心
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
MySQL(一)
查看>>
企业级应用与互联网应用的区别
查看>>
Vue父子组件间的通信
查看>>
PHPCMS 模板的设置
查看>>
linux-2.6.38 input子系统(用输入子系统实现按键操作)
查看>>
单点登录 之 OAuth
查看>>
Mysql 性能优化20个原则(2)
查看>>
Topshelf创建Windows服务
查看>>