php利用stream_socket_server与stream_socket_client
//以上php为服务端,它将监听消息,直到按下:ctrl+c
while(true)
{
//每5秒执行一次
receive_message('127.0.0.1','85',5);
}
//自定义函数用于获取消息
function receive_message($ips教程erver,$portnumber,$nbsecondsidle)
{
//创建socket
$socket=stream_socket_server('tcp://'.$ipserver.':'.$portnumber, $errno, $errstr);
if(!$socket)
{
//如果创建socket失败输出内容
echo "$errstr ($errno)<br />n";
}
else
{
//如果创建成功则接受socket连接并获取信息
while($conn=@stream_socket_accept($socket,$nbsecondsidle))
{
$message=read($conn,1024);
echo 'i have received that : '.$message;
fputs ($conn, "okn");
fclose ($conn);
}
fclose($socket);
}
}
//server结束
?>
<?php
//以下代码为客户端,它将发送信息并读取回复
send_message('127.0.0.1','85','message to send...');
//自定义函数,发送信息
function send_message($ipserver,$portserver,$message)
{
$fp=stream_socket_client("tcp://$ipserver:$portserver", $errno, $errstr);
if(!$fp)
{
echo "erreur : $errno - $errstr<br />n";
}
else
{
fwrite($fp,"$messagen");
$response = fread($fp, 4);
if($response != "okn")
{
echo 'the command couldn't be executed...ncause :'.$response;
}
else
{
echo 'execution successfull...';
}
fclose($fp);
}
}
//创建socket服务
$c=stream_socket_server("tcp://127.0.0.1:1100");
while(1)
{
if(is_resource($a=stream_socket_accept($c)))
{
//do something time-consuming
//获取网络socket名称
if(stream_socket_get_name($a,true)!==false)
{
fwrite($a,"regards form berlin");
}
}
}
//
//创建两个无区别的socket数据流连接
$sockets=stream_socket_pair(stream_pf_unix,stream_sock_stream,stream_ipproto_ip);
//创建子进程并返回其pid
$pid=pcntl_fork();
if($pid==-1)
{
//如果没有子进程
die('could not fork');
}
else if($pid)
{
/*父进程*/
fclose($sockets[0]);
fwrite($sockets[1], "child pid: $pidn");
echo fgets($sockets[1]);
fclose($sockets[1]);
}
else
{
/*子进程*/
fclose($sockets[1]);
fwrite($sockets[0], "message from childn");
echo fgets($sockets[0]);
fclose($sockets[0]);
}
//
/*打开一个socket服务端*/
$server=stream_socket_server('tcp://127.0.0.1:1234');
/*接受一个连接*/
$socket=stream_socket_accept($server);
/*获取数据*/
echo "received out-of-band:'".stream_socket_recvfrom($socket,1500,stream_oob)."'n";
/*使用peek获取数据*/
echo "data:'".stream_socket_recvfrom($socket,1500,stream_peek)."'n";
/*正常获取数*/
echo "data:'".stream_socket_recvfrom($socket,1500)."'n";
/*关闭socket*/
fclose($socket);
fclose($server);
//
/*打开一个socket客户端*/
$socket=stream_socket_client('tcp://127.0.0.1:1234');
/*发送正常数据*/
fwrite($socket,"normal data transmit.");
/*发送更多的数据*/
stream_socket_sendto($socket,"out of band data.",stream_oob);
/*关闭socket*/
fclose($socket);
//
//创建服务端
$socket=stream_socket_server("tcp://0.0.0.0:8000",$errno,$errstr);
//如果创建失败
if(!$socket)
{
echo "$errstr ($errno)<br />n";
}
//如果创建成功
else
{
//接受连接
while($conn=stream_socket_accept($socket))
{
//写入数据
fwrite($conn,'the local time is '.date('n/j/y g:i a')."n");
//关闭连接
fclose($conn);
}
//关闭socket
fclose($socket);
}
if(is_executable("test.txt")) //对文件进行判断
{
echo "文件可执行"; //输出结果
}
else //如果文件不可执行
{
echo "文件不可执行"; //输出信息
}
//
var_dump(is_file("test.txt"))."<br>"; //对文件进行判断
var_dump(is_file("c:/windows"))."<br>"; //对文件进行判断
//
$file="test.txt"; //定义文件
$filestat=stat($file); //返回文件信息
print_r(array_slice($filestat,13)); //输出结果
//
$path=pathinfo("test.txt"); //定义path
echo $path["dirname"]."<br>"; //输出数组dirname
echo $path["basename"]."<br>"; //输出结果数组basename
echo $path["extension"]."<br>"; //输出结果extension
//
$filename="test.txt"; //定义文件
if(is_writable($filename)) //判断文件是否可写
{
echo "文件可写"; //输出信息
}
else //如果文件不可写
{
echo "文件不可写"; //输出信息
}
/*
输出结果类似于:
文件可写
*/
$filename="test.txt"; //定义文件
if(is_readable($filename)) //判断文件是否可读
{
echo "文件可读"; //输出信息
}
else //如果文件不可读
{
echo "文件不可读"; //输出信息
}
/*
输出结果类似于:
文件可读
*/
csv文件等操作。
*/
$fp=fopen('test.txt','r'); //打开文件
$flag=ftruncate($fp,5); //截取文件
if($flag) //判决文件是否截取成功
{
echo "文件截取成功!";
}
else
{
echo "文件截取失败!";
}
fclose($fp); //关闭文件/*
*/
$fp=fopen('test.txt','r'); //以只读方式打开文件
$data=fgets($fp,4096); //读取文件内容
fseek($fp,100); //将文件指针移动到第100个偏移位上
fclose($fp); //关闭文件/*
*/$fp=fopen("test.txt","r"); //打开文件
$contents=fscanf($fp,"%st%st%sn"); //格式化输出文件内容
print_r($contents); //输出内容
fclose($fp); //关闭文件/*
*/
foreach(glob("*.txt") as $filename)
{
echo "文件名:".$filename;
echo "<br>";
echo "文件大小:".filesize($filename)."n";
echo "<p>";
}
//匹配所有的文本文件
function lockfile($fp) //自定义锁定文件函数
{
flock($fp,lock_ex)or die("cannot flock file"); //以独占方式锁定,只有当前进程能够访问文件
}
function unlockfile($fp) //自定义解锁函数
{
flock($fp,lock_un)or die("cannot unlock file"); //释放锁定
}
$fp=fopen("test.txt","w+"); //打开文件
lockfile($fp); //锁定文件
fwrite($fp,"hello,php教程"); //对文件进行写入操作
unlockfile($fp); //解锁
fclose($fp); //关闭文件//
$file="test.txt"; //定义文件
$fp=fopen($file,"w"); //以写入方式打开文件
$date="hello world!"; //定义字符串
fputs($fp,$date); //将字符串写入到指定文件中
fclose($fp); //关闭文件//
$list=array(
'a,b,c,d',
'1,2,3'
); //定义一个数组作为传入函数的参数
$fp=fopen('test.csv','w'); //以写入方式打开一个csv文件
foreach($list as $line) //遍历数组,以","号作为分界符写入csv文件
{
fputcsv($fp,split(',',$line));
}
$date=fread($fp,4096); //读取文件内容
echo $date; //输出文件内容
fclose($fp); //关闭文件//
$fp=fopen("test.txt","r"); //打开文件
echo fpassthru($fp) //读取文件数据到缓冲区
fclose($fp); //关闭文件
<form enctype="multipart/form-data" action="" method="post">
move_uploaded_file函数演示代码:<br>
<input name="upload_file" type="file" >
<input type="submit" value="上传文件" >
</form>
<?php教程
$upload_file=$_files['upload_file']['tmp_name']; //获取上传文件信息
$upload_file_name=$_files['upload_file']['name']; //获取上传文件名称
if($upload_file) //如果有文件上传执行操作
{
$store_dir="__file__"; //定义路径
if(!move_uploaded_file($upload_file,$upload_file_name)) //执行移动上传文件操作
{
echo "上传文件失败!";
exit;
}
else //如果操作成功执行
{
echo "上传文件成功!";
}
}
相关文章
Spring Cloud 中@FeignClient注解中的contextId属性详解
这篇文章主要介绍了Spring Cloud 中@FeignClient注解中的contextId属性详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-25解决Feign切换client到okhttp无法生效的坑(出现原因说明)
这篇文章主要介绍了解决Feign切换client到okhttp无法生效的坑(出现原因说明),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-25- 这篇文章主要介绍了自定义feignClient的常见坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-10-20
SQL Server中row_number函数的常见用法示例详解
这篇文章主要给大家介绍了关于SQL Server中row_number函数的常见用法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-12-08- 这篇文章主要介绍了c# socket网络编程,server端接收,client端发送数据,大家参考使用吧...2020-06-25
- 本文详细讲解了SQLServer中执行动态SQL的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2022-05-19
- 这篇文章主要介绍了C#查询SqlServer数据库并返回单个值的方法,涉及C#操作SQLServer数据库查询的相关技巧,需要的朋友可以参考下...2020-06-25
- 这篇文章主要介绍了JS WebSocket断开原因和心跳机制,对websocket感兴趣的同学,可以参考下...2021-05-08
- 这篇文章主要介绍了C#实现Socket通信的解决方法,需要的朋友可以参考下...2020-06-25
- 本篇文章主要介绍了C# Socket异步通信,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法
这篇文章主要介绍了SQL Server免费版的安装以及使用SQL Server Management Studio(SSMS)连接数据库的图文方法,需要的朋友可以参考下...2020-07-11C#实现Excel表数据导入Sql Server数据库中的方法
这篇文章主要介绍了C#实现Excel表数据导入Sql Server数据库中的方法,结合实例形式详细分析了C#读取Excel表数据及导入Sql Server数据库的具体操作步骤与相关操作技巧,需要的朋友可以参考下...2020-06-25- 本篇文章主要介绍了C# Socket的TCP通讯,socket通讯方式有两种:同步和异步,详细的介绍了这两种方法,有兴趣的可以了解一下。...2020-06-25
C#中HttpWebRequest、WebClient、HttpClient的使用详解
这篇文章主要介绍了C#中HttpWebRequest、WebClient、HttpClient的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-25python使用socket高效传输视频数据帧(连续发送图片)
本文主要介绍了python使用socket高效传输视频数据帧(连续发送图片),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-23SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 'WIN-8IVSNAQS8T7\Administrator' 的信息,错误代码 0x534。 [SQLSTATE 42000] (ConnIsLoginSysAdmin)...2021-07-15- 这篇文章主要介绍了C语言中send()函数和sendto()函数的使用方法,是C语言入门学习中的基础知识,需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了C#连接到sql server2008数据库的实例代码,需要的朋友可以参考下...2020-06-25
- 我们在调试过程使用的工具有:modheader,postman等,但这些工具都会存在的问题:缺少客户端里相应的设备信息;即使将cookie信息复制出来,也是存在过期的问题;多个设备之间切换时不方便;针对这些存在的问题,我基于websocket双向通信的特点,实现了多端桥接管理平台...2021-05-15
- 这篇文章主要介绍了C#编程实现连接SQL SERVER数据库的方法,以实例形式较为详细的分析了C#连接SQL SERVER数据库的相关步骤与具体实现技巧,需要的朋友可以参考下...2020-06-25