1. 云栖社区>
  2. PHP教程>
  3. 正文

PHP Socket编程小试

作者:用户 来源:互联网 时间:2017-12-01 17:27:06

编程phpsocket小试

PHP Socket编程小试 - 摘要: 本文讲的是PHP Socket编程小试, 参考资料:      PHP官方手册、php实例说明 socket通信机制(张映)         对于PHP Socket编程,一直感觉很陌生,今天特意了解了一下,根据资料做了个小例子,本地可以运行成功。 服务端: <?php/*


参考资料:


     PHP官方手册
、php实例说明 socket通信机制(
张映
)


 


      对于PHP Socket编程,一直感觉很陌生,今天特意了解了一下,根据资料做了个小例子,本地可以运行成功。


服务端:


<?php
/**
* server端
* @author flyer0126
* @since 2012/08/21
*/
set_time_limit(0);
// 加载扩展库
if (!extension_loaded('sockets')){
if (strtoupper(substr(PHP_OS, 3)) == 'WIN'){dl('php_sockets . dll');
} else{dl('sockets . so');
}
}
// 建立server端socket
$tcp = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $tcp);
socket_bind($socket,"127.0.0.1", 20080); //绑定要监听的端口
socket_listen($socket); //监听端口
//初始化一个数据,和客户端通信
$buffer ="connect ok";
while (true) {
// 接受一个socket连接
$connection = socket_accept($socket);
if(!$connection){
echo"connect fail";
}else{
echo"Socket connectedrn";
// 向客户端传递一个信息数据
if ($buffer !="") {
echo"send data to clientrn";
socket_write($connection, $buffer ."rn", strlen($buffer ."rn"));
echo"Wrote to socketrn";
} else {
echo"no data in the bufferrn";
}
// 从客户端取得信息
while ($data = @socket_read($connection, 1024, PHP_NORMAL_READ)) {
printf("Buffer:". $data ."rn");
//取得信息给客户端一个反馈
socket_write($connection,"Information Receivedrn", strlen("Information Receivedrn"));
}
}
socket_close($connection);
//关闭 socket
printf("Closed the socketrn");
}


 
客户端:


<?php
/**
* client端
* @author flyer0126
* @since 2012/08/21
*/
// 建立客户端的socet连接
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
$connection = socket_connect($socket, '127.0.0.1', 20080); //连接服务器端socket
while ($buffer = @socket_read($socket, 1024, PHP_NORMAL_READ)) {
//服务端告诉客户端,自己的状态
if (preg_match("/not connect/",$buffer)) {
echo"don`t connectrn";
break;
} else {
//服务器传来信息
echo"Buffer Data:". $buffer ."rn";
echo"Writing to Socketrn";
// 将客户的信息写到通道中,传给服务器端
$write_data ="SOME DATArn";
if (!socket_write($socket, $write_data)) {
echo"Write failedn";
}
//服务器端收到信息后,给于的回应信息
while ($buffer = socket_read($socket, 1024, PHP_NORMAL_READ)) {
echo"sent to server: $write_data, response from server was:". $buffer ."rn";
}
}
}

      运行server端,查看端口20080已处于监听状态,另一个命令提示符执行client端,接收处理数据正常。


服务端执行输出:
PHP Socket编程小试
  客户端执行输出:
PHP Socket编程小试


 


PHP Socket编程小试
大小: 85.6 KB
PHP Socket编程小试
大小: 95.4 KB
查看图片附件

以上是PHP Socket编程小试的全部内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有其他相关内容,欢迎继续使用右上角搜索按钮进行搜索编程 , php , socket 小试 ,以便于您获取更多的相关知识。