基于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方式获取远程图片