php中socket常用实例

 更新时间:2016年11月25日 16:49  点击:1483

代码扩充获取远程主机socket信息*/
function getpeername()
{
  $remote_ip=$remote_port=0;         //定义ip
  socket_getpeername($this->fd,$remote_ip,$remote_port);   //返回主机信息
  return array($remote_ip,$remote_port);       //返回一个数组
}

?>

<?php教程
if(false==($socket=@socket_create(af_inet,sock_stream,sol_tcp)))  //如果创建socket失败
{
  die("couldn't create socket, error code is:".socket_last_error().",error message is: " . socket_strerror(socket_last_error()));          //输出错误信息与错误代码
}
?>

<?php
/*以下代码扩充获取本地主机socket信息*/
function getsockname()
{
  $remote_ip=$remote_port=0;         //定义ip
  socket_getsockname($this->fd,$remote_ip,$remote_port);   //返回主机信息
  return array($remote_ip,$remote_port);       //返回一个数组
}
?>


<?php
/*定义欲读取的数组*/
$read=array($socket1,$socket2);
/*执行操作*/
$num_changed_sockets=socket_select($read,$write=null,$except=null,0);
if($num_changed_sockets===false)
{
  /*error handling*/
}
else if($num_changed_sockets>0)
{
  /*at least at one of the sockets something interesting happened*/
}

*/
$sessionpath=session_save_path();        //获取当前session的保存路径
echo $sessionpath;
if(strpos($sessionpath,";")!==false)        //如果路径中存在分号
{
  $sessionpath=substr($sessionpath,strpos($sessionpath,";")+1);  //设置新的路径
}


function open($save_path,$session_name)      //定义打开函数
{
  global $sess_save_path,$sess_session_name;     //预定义session路径及名称
  $sess_save_path=$save_path;        //定义保存路径
  $sess_session_name=$session_name;       //定义session名称
  return(true);            //返回真值
}
function close()            //定义关闭函数
{
  return(true);            //直接返回真值
}
function read($id)           //定义读取函数
{
  global $sess_save_path,$sess_session_name;     //预定义保存路径与名称
  $sess_file="$sess_save_path/sess_$id";      //定义文件
  if(fopen($sess_file,"r">$fp=@fopen($sess_file,"r"))        //打开文件
  {
    $sess_data=fread($fp,filesize($sess_file));      //读取文件
    return($sess_data);          //返回读取内容
  }
  else
  {
    return("");            //如果读取失败必须返回空值
  }
}
function write($id,$sess_data)         //定义写入函数
{
  global $sess_save_path,$sess_session_name;     //预定义保存路径与名称
  $sess_file="$sess_save_path/sess_$id";      //定义文件
  if($fp=@fopen($sess_file,"w"))        //打开文件
  {
    return(fwrite($fp,$sess_data));        //执行写操作
  }
  else
  {
   return(false);           //如果打开失败返回错误
  }
}
function destroy($id)           //定义注销函数
{
  global $sess_save_path,$sess_session_name;
  $sess_file="$sess_save_path/sess_$id";      //指明文件
  return(@unlink($sess_file));         //删除session文件
}
function gc($maxlifetime)          //定义过期函数
{
  return true;            //直接返回真值
}
session_set_save_handler("open","close","read","write","destroy","gc"); //设置函数
session_start();            //初始化session
//以下就可以继续正常地使用session
?>

stream_context_create创建并返回一个文本数据流并应用各种选项,可用于fopen(),file_get_contents()等过程的超时设置、代理服务器、请求方式、头信息设置的特殊过程。

函数原型:resource stream_context_create ([ array $options [, array $params ]] )

看个实例

//定义options数组
$opts=array
(
  'http'=>array
  (
    'method'=>"get",
    'header'=>"accept-language: enrn"."cookie: foo=barrn"
  )
);
//创建数据流上下文
$context=stream_context_create($opts);
/*向指定地址发送http请求
请求中包含附加的头部信息*/
$fp=fopen('http://www.111cn.net','r',false,$context);
//输出文件指针处的所有数据
fpassthru($fp);
//关闭文件
fclose($fp);
/*
该代码的输出结果为:即请求的cookie值
array
(
    [foo] => bar
)
*/

实例二

$default_opts=array
(
  'http'=>array
  (
    'method'=>"get",
    'header'=>"accept-language: enrn"."cookie: foo=bar",
    'proxy'=>"tcp://10.54.1.39:8000"
  )
);
$alternate_opts=array
(
  'http'=>array
  (
    'method'=>"post",
    'header'=>"content-type: application/x-www-form-urlencodedrn"."content-length: " . strlen("baz=bomb"),
    'content'=>"baz=bomb"
  )
);
$default=stream_context_get_default($default_opts);
$alternate=stream_context_create($alternate_opts);
/* sends a regular get request to proxy server at 10.54.1.39
* for www.example.com using context options specified in $default_opts
*/
readfile('http://www.example.com');
/* sends a post request directly to www.example.com
* using context options specified in $alternate_opts
*/
readfile('http://www.example.com', false, $alternate);

opendir() 函数打开一个目录句柄,可由 closedir(),readdir() 和 rewinddir() 使用。

 

语法
opendir(path,context)
*/
$d=dir("c:windows");         //打开目录,并赋值给变量
echo "handle:".$d->handle."n";       //输出目录的handel属性
echo "<p>";
echo "path:".$d->path."n";        //输出目录的path属性
echo "<p>";
while(false!==($entry=$d->read()))       //通过循环读取对象的方法
{
  echo $entry."n";
}
$d->close();           //关闭目录句柄


//


$dir="c:windows";          //定义目录
if(is_dir($dir))           //如果变量为目录
{
  if($dh=opendir($dir));         //如果成功打开目录
  {
    echo "目录".$dir."成功打开";
  }
}
echo "<br>";
closedir($dh);          //关闭打开的目录句柄
echo "目录".$dir."已经关闭!";


///

$dir=" c:windows ";          //定义目录变量
if(is_dir($dir))           //判断变量是否为目录
{
  if($dh=opendir($dir))         //判断目录是否成功打开
  {
    while(($file=readdir($dh))!==false)      //循环读取目录中的文件信息
    {
      echo "filename:$file,filetype:".filetype($dir.$file)."n";  //输出文件名及文件类型
    }
    closedir($dh);          //关闭目录句柄
  }
}

///

if($handle=opendir('web'))         //如果目录顺利打开
{
  while(false!==($file=readdir($handle)))      //循环读取目录中的条目
  {
    if($file!="."&&$file!="..")        //如果文件不为当前或上级目录
    {
      echo "$filen";          //输出文件名称
    }
  }
  closedir($handle);          //关闭目录句柄
}

//

if($handle=opendir('08'))         //如果目录顺利打开
{
  while(false!==($file=readdir($handle)))      //循环读取目录中的条目
  {
    if($file!="."&&$file!="..")        //如果文件不为当前或上级目录
    {
      echo "$filen";          //输出文件名称
    }
  }
  rewind($handle);          //倒回目录句柄
  if(readdir($handle))       //判断是否倒回成功
  {
    echo "倒回成功";
  }
  else
  {
    echo "倒回失败";
  }
  closedir($handle);          //关闭目录句柄
}

//如果要对目录按字母排序如一

$files1=scandir($dir);         //按字母升序列出内容到数组
$files2=scandir($dir,1);        //按字母降序列出内容到数组

本文章收藏了大量的php中文件操作函数如有文件打开,创建,删除,更变组,读取写文件,文件上传以及打开远程文件,把内容写入文件等实例。

$fp=fopen("test.txt","r");
//以只读方式打开文件,将文件指针指向文件头
$fp=fopen("test.txt","r+");
//以读写方式打开文件,将文件指针指向文件头
$fp=fopen("test.txt","w");
//写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
$fp=fopen("test.txt","w+");
//以读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
$fp=fopen("test.txt","a");
//以写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建
$fp=fopen("test.txt","a+");
//以读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建
$fp=fopen("test.txt","wb+");
//以写入方式打开二进制文件,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建
$fp=fopen("c: est est.txt","r");
//在windows平台上,要转义文件路径中的每个反斜线,或者用斜线
$fp=fopen("http://www.domain.com/","r");
//以只读方式打开web地址
$fp=fopen("ftp://username:password@domain.com/test.txt","r");
//与ftp服务器连接,以username和password登录服务器
/*
本实例代码无输出结果
*/


$fp=fopen("test.txt","r");          //打开文件
$msg=fread($fp,filesize("test.txt"));        //读取文件内容到变量
print "$msg";            //输出文件内容
fclose($fp);            //关闭文件

//

$fp=popen("test.txt","r");          //以只读方式打开文件
$fp=popen($_post['command'],'r');
$read=fread($fp,2096);          //读取内容
echo $read;            //输出内容
pclose($fp);            //关闭文件
//这里用popen执行命令,命令是以post方式提交的参数,并返回执行结果。需要注意的是如果未找到要执行的命令,会返回一个合法的资源。它允许访问shell返回的任何错误信息。在打开了安全模式时,只能执行在safe_mode_exec_dir之内的程序,不能在指向程序的路径中包含..成分,即不能在指定目下外执行命令。

$fp=popen($_post['command'],'r');        //打开进程文件
$read=fread($fp,2096);          //读取进程文件指针到变量
echo $read;            //输出内容
pclose($fp);            //关闭进程文件

//

$file="test.txt";        //定义文件
if(file_exists($file))       //判断文件是否存在
{
  echo "下面清除缓存";
}
echo "<p>";
clearstatcache();       //清除文件状态缓存
if(file_exists($file))       //判断文件是否存在
{
  die('清除完毕');
}

//

$filename="test.txt";     //定义文件
$user="admin";      //定义用户
chgrp($filename,$group);    //改变文件/test/testfile.txt的所有者为"admin"

//

chmod("/test/testfile.txt",0600);
//只有文件所有者拥有读写权限
chmod("/test/testfile.txt",0644);
//文件所有者拥有读写权限,其他用户拥有只读权限
chmod("/test/testfile.txt",0755);
//文件所有者拥有所有权限,其他用户拥有读和执行权限
chmod("/test/testfile.txt",0750);
//文件所有者拥有所有权限,文件所有者所在用户组拥有读和执行权限

//

$file="test.txt";         //定义文件
delete($file);         //删除文件
//在php编程时一般还是用unlink函数来删除文件。


//

//以下代码实现文件上传功能,首先用move_uploaded_file函数上传文件;如果失败就用copy函数上传文件,上传到指定目录并修改目录属性。
//使用此代码要有文件上传权限,还要定义$path上传路径。另外必须有上传内容。单独使用,无输出内容
if(function_exists('move_uploaded_file') && move_uploaded_file($attachment,$path))
{
  chmod($path,0666);       //改变文件访问模式
  $attachment=$path;
}
elseif(copy($attachment,$path))     //如果move_upload_file就用cope()
{
  chmod($path,0666);       //改变文件访问属性
  $attachment=$path;
}

[!--infotagslink--]

相关文章

  • C# 10个常用特性汇总

    这篇文章主要介绍了C# 10个常用特性,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-09
  • c# socket网络编程接收发送数据示例代码

    这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
  • 详解JS WebSocket断开原因和心跳机制

    这篇文章主要介绍了JS WebSocket断开原因和心跳机制,对websocket感兴趣的同学,可以参考下...2021-05-08
  • C#实现Socket通信的解决方法

    这篇文章主要介绍了C#实现Socket通信的解决方法,需要的朋友可以参考下...2020-06-25
  • 详解C# Socket异步通信实例

    本篇文章主要介绍了C# Socket异步通信,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • C# Socket的TCP通讯的实例代码

    本篇文章主要介绍了C# Socket的TCP通讯,socket通讯方式有两种:同步和异步,详细的介绍了这两种方法,有兴趣的可以了解一下。...2020-06-25
  • python使用socket高效传输视频数据帧(连续发送图片)

    本文主要介绍了python使用socket高效传输视频数据帧(连续发送图片),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-23
  • JS如何实现基于websocket的多端桥接平台

    我们在调试过程使用的工具有:modheader,postman等,但这些工具都会存在的问题:缺少客户端里相应的设备信息;即使将cookie信息复制出来,也是存在过期的问题;多个设备之间切换时不方便;针对这些存在的问题,我基于websocket双向通信的特点,实现了多端桥接管理平台...2021-05-15
  • C语言中send()函数和sendto()函数的使用方法

    这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
  • C# 实现WebSocket服务端教程

    这篇文章主要介绍了C# 实现WebSocket服务端教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-08
  • 快速理解MySQL中主键与外键的实例教程

    主键与外键的关系,通俗点儿讲,我现在有一个论坛,有两张表,一张是主贴 thread,一张是回帖 reply先说说主键,主键是表里面唯一识别记录的字段,一般是帖子id,体现在访问的时候,例如是 thread.php&#63;id=1 表示我要访问的是帖子...2015-11-24
  • C# Socket编程实现简单的局域网聊天器的示例代码

    这篇文章主要介绍了C# Socket编程实现简单的局域网聊天器,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25
  • c# 接口使用实例

    这篇文章主要介绍了c#接口使用的实例,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-17
  • yii添删改查实例

    一、数据访问对象 (DAO)YiiDAO 基于 PHP Data Objects (PDO) 构建。它是一个为众多流行的DBMS提供统一数据访问的扩展,这些 DBMS 包括MySQL, PostgreSQL 等等。因此,要使用 Yii DAO,PDO 扩展和特定的 PDO 数据库驱动(例如...2015-11-24
  • 一篇文章带你使用SpringBoot基于WebSocket的在线群聊实现

    这篇文章主要介绍了一篇文章带你使用SpringBoot基于WebSocket的在线群聊实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-10-08
  • SpringBoot中webSocket实现即时聊天

    这篇文章主要介绍了SpringBoot中webSocket实现即时聊天,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-30
  • C#中的IEnumerable简介及简单实现实例

    这篇文章主要介绍了C#中的IEnumerable简介及简单实现实例,本文讲解了IEnumerable一些知识并给出了一个简单的实现,需要的朋友可以参考下...2020-06-25
  • Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例

    这篇文章主要介绍了Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例,帮助大家更好的理解和学习vue,感兴趣的朋友可以了解下...2020-11-18
  • Go语言实现socket实例

    这篇文章主要介绍了Go语言实现socket的方法,实例分析了socket客户端与服务器端的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-05-03
  • Python基础之Socket通信原理

    这篇文章主要介绍了Python基础之Socket通信原理,文中有非常详细的代码示例,对正在学习python基础的小伙伴们有非常好的帮助,需要的朋友可以参考下...2021-04-22