php和c++socket通讯(基于字节流,二进制)

研究了一下PHP和C++socket通讯,用C++作为服务器端,php作为客户端进行.

socket通讯是基于协议的,因此,只要双方协议一致就行.

关于协议的选择:我看过网上大部分协议都是在应用层的协议,选用这样的协议很方便,基本上就是字符串传过来,传过去

本次研究的协议算是当今国际化的一个标准做法.length+flag+body(长度+类型+内容)的方式,

total_length code flag length1 string1 length2 string2
总长度 操作类型 标志 字符串1长度 字符串1 字符串2长度 字符串2
4字节 2字节 4字节(暂时无用) 2字节 x字节 2字节 x字节

php实现方式,也很容易,通过pack打包成二进制进行通讯.下面贴一下代码

Read More

PHP 魔术方法__set() __get() 方法详解

__set() is run when writing data to inaccessible properties.
__get() is utilized for reading data from inaccessible properties.

究竟用中文怎么翻译呢? inaccessible :n. 难达到;难接近;无法理解。
有代码有真相:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php  
error_reporting(E_ALL);
class stu{
private $a;
private $b = 0;
public $c;
public $d = 0;
//这里的 private 可以用 protected public 替代
private function __get($name) {
return 123;
}
//这里的 private 也可以用 protected public 替代
private function __set($name, $value) {
echo "This is set function";
}
}
$s = new stu();
var_dump($s->a); //output: 123
var_dump($s->b); //output: 123
var_dump($s->c); //output: null
var_dump($s->d); //output: 0
var_dump($s->e); //output: 123
$s->a = 3; //output: This is set function
$s->c = 3; //no output
$s->f = 3; //output: This is set function
?>

Read More

PHP超级全局变量总结

PHP有9个预定义变量数组,分别总结如下:

1、$_SERVER

$_SERVER超级全局变量包含由web服务器创建的信息,它提供了服务器和客户配置及当前请求环境的有关信息。根据服务器不同,$_SERVER中的变量值和变量个数会有差别,不过一般都可以找到CGI1.1规范中定义的变量。其中包括:

$_SERVER[ ‘HTTP_REFERER’ ] ; 引导用户到达当前位置的页面的URL ;

$_SERVER[ ‘REMOTE_ADDR‘ ] ; 客户IP地址 ;

$_SERVER[ ’REQUEST_URI‘ ] ; URL的路径部分。如果URL是http://www.example.com/blog/apache/index.html ,那么URI就是/blog/apache/index.html 。

$_SERVER[ ‘HTTP_USER_AGENT’ ] ; 客户的用户代理,一般会提供操作系统和浏览器的有关信息。

Read More

利用Jquery给当前页或者跳转后页面的导航栏添加选中后样式

当鼠标选中页面导航栏的某一栏目后,如何给选中栏目添加特殊样式,一直没怎么搞清楚,今天学习了一下,并做个总结。

这边有两种情况,一种是直接给当前页面添加特殊样式,当网页刷新或者跳转到下一页后,样式消失;另一种情况是即使刷新页面后样式仍然有效。

直接上代码:

第一种情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script type="text/javascript" src="templets/js/jquery.js"></script>  
<script type="text/javascript">
$(document).ready(function(){
$(".nav a").each(function(){
$(this).click(function(){
$(".nav .hover").removeClass("hover");
$(this).addClass("hover");
return false;//防止页面跳转
});
});
});
</script>

<div class="nav">
<ul>
<li><a href="1.html" class="hover"> 首页</a></li>
<li><a href="2.html"> 个人资料</a></li>
<li><a href="3.html"> 我的好友</a></li>
<li><a href="4.html"> 消息管理</a></li>
</ul>
</div>

Read More