海妖 发表于 2015-1-16 22:16:06

PHP网页设计PHP udp的错包成绩

完成一个功能齐全的动态站点成绩
看上面一段代码$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],$conf[$i]);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年具体的记不清啦,囧。

若天明 发表于 2015-2-28 09:45:53

因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax

若相依 发表于 2015-3-9 22:11:01

写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。

深爱那片海 发表于 2015-3-17 02:10:30

我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:

admin 发表于 2015-3-23 17:23:45

首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
页: [1]
查看完整版本: PHP网页设计PHP udp的错包成绩