仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 511|回复: 7
打印 上一主题 下一主题

[学习教程] PHP网页设计PHP udp的错包成绩

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:16:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
完成一个功能齐全的动态站点成绩
看上面一段代码$word=HELLO;$conf=array(array(ip=>10.1.146.133,port=>2001),array(ip=>10.1.146.133,port=>2002));functionudpGet($word,$ip,$port){$sock=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);socket_set_option($sock,SOL_SOCKET,SO_SNDTIMEO,array(sec=>2,usec=>0));socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,array(sec=>2,usec=>0));socket_sendto($sock,$word,strlen($word),0x100,$ip,$port);socket_recvfrom($sock,$result,8192,0,$host,$port);socket_close($sock);return$result;}for($i=0;$i<2;$i++){$res=udpGet($word,$conf[$i][ip],$conf[$i][port]);var_dump($res);}就是一连用UPD向两个server收发数据(为申明成绩,这里的server利用了最复杂的回射逻辑),假如统统流程一般,客户端会收到两次‘HELLO’。可是,假如服务端出了成绩呢?今朝,客户真个超不时间是2秒,假定2001端口过了3秒发数据,而2002端口没法服务,猜下了局会是甚么呢?“两个NULL!”,直觉上应当是这个谜底。假如你也这么以为,那末祝贺你,答错了。实践的谜底是:NULLstring(5)"HELLO"剖析利用tcpdump抓包,失掉以下了局(133为服务端,163为客户端,客户端php版本5.3.1,Linux内核2.6.16)12:01:39.014658IP10.1.146.163.40678>10.1.146.133.2001:UDP,length512:01:41.015121IP10.1.146.163.40678>10.1.146.133.2002:UDP,length512:01:42.016103IP10.1.146.133.2001>10.1.146.163.40678:UDP,length5两个哀求应当利用分歧的一时端口收发,但从抓包了局看,客户端固然举行了两次socket_create,但实践中却利用了统一一时端口(40678)收发数据!这就使得第二个哀求收到了第一个哀求的回包。感到上这应当算是个体系的BUG,从实行中发明,此成绩只在部分体系中存在,好比Linux内核2.6.32+php5.2.3就没有此成绩。办理每次指定socket端口,举行收发。以下面的白色代码所示。$sock=socket_create(AF_INET,SOCK_DGRAM,SOL_UDP);$sendPort=rand(10240,60000);socket_bind($sock,’10.1.146.163&prime;,$sendPort);socket_set_option($sock,SOL_SOCKET,SO_SNDTIMEO,array(‘sec’=>2,‘usec’=>0));socket_set_option($sock,SOL_SOCKET,SO_RCVTIMEO,array(‘sec’=>2,‘usec’=>0));固然,rand的端口也有大概呈现对撞,但究竟这类机率不年夜,能够从很年夜水平上办理成绩。在我开始学习PHP以前,我从未想过要做软件工程,即便是在去听过华育国际的关于软件工程的美好前景后,因为我一直都没有想过要与代码打交道,而是想学好所学专业,做个网络工程师或者是网络安全人员。
小妖女 该用户已被删除
沙发
发表于 2015-1-25 23:35:51 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
兰色精灵 该用户已被删除
板凳
发表于 2015-2-4 13:25:12 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
精灵巫婆 该用户已被删除
地板
发表于 2015-2-9 23:39:45 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
若天明 该用户已被删除
5#
发表于 2015-2-28 09:45:53 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
若相依 该用户已被删除
6#
发表于 2015-3-9 22:11:01 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
深爱那片海 该用户已被删除
7#
发表于 2015-3-17 02:10:30 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
admin 该用户已被删除
8#
发表于 2015-3-23 17:23:45 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-16 11:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表