基于php socket(fsockopen)的应用实例分析
2015-01-24信息快讯网
本篇文章是对php socket(fsockopen)的应用实例进行了详细的分析介绍,需要的朋友参考下
fsockopen函数能够运用,首先要开启php.ini中的allow_url_open=on;fsockopen是对socket客户端代码的封装,该函数中封装了socket_create,socket_connect。
服务器端代码:server.php
<?php
error_reporting(E_ALL);
set_time_limit(0);
$address = '127.0.0.1';
$port = 10008;
//创建端口
if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) === false) {
echo "socket_create() failed:reason:" . socket_strerror(socket_last_error()) . "\n";
}
//绑定
if (socket_bind($sock, $address, $port) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
//监听
if (socket_listen($sock, 5) === false) {
echo "socket_bind() failed :reason:" . socket_strerror(socket_last_error($sock)) . "\n";
}
while (true) {
//得到一个链接
if (($msgsock = socket_accept($sock)) === false) {
echo "socket_accepty() failed :reason:".socket_strerror(socket_last_error($sock)) . "\n";
break;
}
//welcome 发送到客户端
$msg = "1.<font color='red'>server send:welcome</font><br/>";
socket_write($msgsock, $msg, strlen($msg)); //返回信息给客户端
echo 'read client message\n';
$buf = socket_read($msgsock, 8192); //获取客户端发送过来的信息
$talkback = "2.received message:$buf\n";
echo $talkback;
if (false === socket_write($msgsock, $talkback, strlen($talkback))) { //返回信息给客户端
echo "socket_write() failed reason:" . socket_strerror(socket_last_error($sock)) ."\n";
} else {
echo 'send success';
}
socket_close($msgsock);
}
socket_close($sock);
客户端代码:fsocket.php
<?php
$fp = fsockopen("127.0.0.1", 10008, &$errno, &$errstr, 10);
if (!$fp) {
echo $errstr . " (". $errno . ")<br>n";
} else {
$in = "HEAD / http/1.1\r\n";
$in .= "HOST: localhost \r\n";
$in .= "Connection: close\r\n\r\n";
fputs($fp, $in);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);
}
php另类上传图片的方法(PHP用Socket上传图片)
php json与xml序列化/反序列化
php数组转换js数组操作及json_encode的用法详解
php与java通过socket通信的实现代码
php MessagePack介绍
php json_encode值中大括号与花括号区别
php一次性删除前台checkbox多选内容的方法
PHP 通过Socket收发十六进制数据的实现代码
php中用socket模拟http中post或者get提交数据的示例代码
浅析虚拟主机服务器php fsockopen函数被禁用的解决办法
PHP不用第三变量交换2个变量的值的解决方法
深入PHP操作MongoDB的技术总结
php中serialize序列化与json性能测试的示例分析
php和js如何通过json互相传递数据相关问题探讨
PHP应用JSON技巧讲解
PHP5.4中json_encode中文转码的变化小结
PHP flock 文件锁详细介绍
PHP gbk环境下json_dencode传送来的汉字
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
php 调试利器debug_print_backtrace()
php数据结构与算法(PHP描述) 快速排序 quick sort
php中jQuery插件autocomplate的简单使用笔记
simplehtmldom Doc api帮助文档
PHP异步调用socket实现代码
php fsockopen中多线程问题的解决办法[翻译]
php空间不支持socket但支持curl时recaptcha的用法
php获取远程图片的两种 CURL方式和sockets方式获取远程图片