PHP向socket服务器收发数据的方法


Posted in PHP onJanuary 24, 2015

本文实例讲述了PHP向socket服务器收发数据的方法。分享给大家供大家参考。具体如下:

在PHP要向其它程序发送数据,则需要使用到php的socket功能来实例了,下面我们简单看一个实例,代码如下:

/*socket收发数据 

    @host(string) socket服务器IP 

    @post(int) 端口 

    @str(string) 要发送的数据 

    @back 1|0 socket端是否有数据返回 

    返回true|false|服务端数据 

*/ 

function sendSocketMsg($host,$port,$str,$back=0){ 

        $socket = socket_create(AF_INET,SOCK_STREAM,0); 

        if ($socket < 0) return false; 

        $result = @socket_connect($socket,$host,$port); 

        if ($result == false)return false; 

        socket_write($socket,$str,strlen($str));
        if($back!=0){ 

            $input = socket_read($socket,1024); 

            socket_close ($socket);     

            return $input; 

        }else{ 

            socket_close ($socket);     

            return true;     

        }     

}

socker_read的第二个参数用以指定读入的字节数,你可以通过它来限制从客户端获取数据的大小.

sock函数介绍

函数名 描述
socket_accept() 接受一个Socket连接
socket_bind() 把socket绑定在一个IP地址和端口上
socket_clear_error() 清除socket的错误或者最后的错误代码
socket_close() 关闭一个socket资源
socket_connect() 开始一个socket连接
socket_create_listen() 在指定端口打开一个socket监听
socket_create_pair() 产生一对没有区别的socket到一个数组里
socket_create() 产生一个socket,相当于产生一个socket的数据结构
socket_get_option() 获取socket选项
socket_getpeername() 获取远程类似主机的ip地址
socket_getsockname() 获取本地socket的ip地址
socket_iovec_add() 添加一个新的向量到一个分散/聚合的数组
socket_iovec_alloc() 这个函数创建一个能够发送接收读写的iovec数据结构
socket_iovec_delete() 删除一个已经分配的iovec
socket_iovec_fetch() 返回指定的iovec资源的数据
socket_iovec_free() 释放一个iovec资源
socket_iovec_set() 设置iovec的数据新值
socket_last_error() 获取当前socket的最后错误代码
socket_listen() 监听由指定socket的所有连接
socket_read() 读取指定长度的数据
socket_readv() 读取从分散/聚合数组过来的数据
socket_recv() 从socket里结束数据到缓存
socket_recvfrom() 接受数据从指定的socket,如果没有指定则默认当前socket
socket_recvmsg() 从iovec里接受消息
socket_select() 多路选择
socket_send() 这个函数发送数据到已连接的socket
socket_sendmsg() 发送消息到socket
socket_sendto() 发送消息到指定地址的socket
socket_set_block() 在socket里设置为块模式
socket_set_nonblock() socket里设置为非块模式
socket_set_option() 设置socket选项
socket_shutdown() 这个函数允许你关闭读、写、或者指定的socket
socket_strerror() 返回指定错误号的详细错误
socket_write() 写数据到socket缓存
socket_writev() 写数据到分散/聚合数组

注意:socket_read函数会一直读取壳户端数据,直到遇见n,t或者字符,PHP脚本把这些字符看做是输入的结束符.

希望本文所述对大家的php程序设计有所帮助。

PHP 相关文章推荐
PHP的PSR规范中文版
Sep 28 PHP
PHP使用PHPMailer发送邮件的简单使用方法
Nov 12 PHP
详解PHP中strlen和mb_strlen函数的区别
Mar 07 PHP
MyEclipse常用配置图文教程
Sep 11 PHP
php绘制一个矩形的方法
Jan 24 PHP
php实现上传图片保存到数据库的方法
Feb 11 PHP
PHP的pcntl多进程用法实例
Mar 19 PHP
PHP-FPM实现性能优化
Mar 31 PHP
Yii2实现让关联字段支持搜索功能的方法
Aug 10 PHP
laravel利用中间件做防非法登录和权限控制示例
Oct 21 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
Feb 27 PHP
PHP 超级全局变量相关总结
Jun 30 PHP
php内存缓存实现方法
Jan 24 #PHP
php+xml编程之SimpleXML的应用实例
Jan 24 #PHP
php+xml编程之xpath的应用实例
Jan 24 #PHP
php+xml实现在线英文词典之添加词条的方法
Jan 23 #PHP
php+xml实现在线英文词典查询的方法
Jan 23 #PHP
通过php修改xml文档内容的方法
Jan 23 #PHP
通过php删除xml文档内容的方法
Jan 23 #PHP
You might like
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
php实现的短网址算法分享
2014/06/20 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
jQuery.deferred对象使用详解
2016/03/18 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
JS中SetTimeout和SetInterval使用初探
2017/03/23 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
VUE-Table上绑定Input通过render实现双向绑定数据的示例
2018/08/27 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
vue中解决拖拽改变存在iframe的div大小时卡顿问题
2020/07/22 Javascript
[43:35]TI4 循环赛第二日Liquid vs Fnatic
2014/07/11 DOTA
python使用Flask框架获取用户IP地址的方法
2015/03/21 Python
Python编程实现双击更新所有已安装python模块的方法
2017/06/05 Python
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python+selenium实现自动抢票功能实例代码
2018/11/23 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
Python函数式编程实例详解
2020/01/17 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Python 打印自己设计的字体的实例讲解
2021/01/04 Python
慕尼黑山地运动、户外服装和体育用品专家:Sporthaus Schuster
2019/08/27 全球购物
什么是Smarty变量操作符?如何使用Smarty变量操作符
2014/07/18 面试题
统计每一学生的平均成绩
2014/06/06 面试题
计算机网络专业个人的自我评价
2013/10/17 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
Mysql文件存储图文详解
2021/06/01 MySQL
node快速搭建后台的实现步骤
2022/02/18 NodeJs
公历12个月名称的由来
2022/04/12 杂记
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript