php socket发送,php 利用socket上传文件

一,利用fsockopen来上传文件

以前我写过一篇关于socket通信原理的博文http://blog.51yip.com/php/673.html有兴趣的朋友可以看看,前面讲的那篇博文,socket的服务器和客户端都是要用php命令来运行的。平常我们上传文件是浏览本地文件,通过一个php程序将文件上传一个地方,这个时候我们用php命令来运行php程序就不方便了。这个时候我们可以用fsockopen来打开一个socket通道,并且可以通过浏览器来访问页面。下面有一个例子,大家可以试一下。

二,upload.html

浏览本地文件上传到中间文件image.php

三,image.php来向socket传送数据

$fp = fsockopen("127.0.0.1", 10008, $errno, $errstr, 10);

$array = $_FILES['photo'];

if(!$fp){

echo "open fail";

}else{

if(!empty($array)){

$str= 'filename:'.$array['name'];

fwrite($fp,$str);

$filename = $array['tmp_name'];

$handle = fopen($filename, "r");

$contents = fread($handle, filesize($filename));

fwrite($fp,$contents);

}

echo $fp;

}

fclose($fp);

?>

他的作用是和SOCKET服务器,建立通信,将数据输送到socket通道中

四,server.php接收到数据

// 建立server端socket

$tcp = getprotobyname("tcp");

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

socket_bind($socket, '127.0.0.1', 10008); //绑定要监听的端口

socket_listen($socket); //监听端口

//初始化一个数据,和客户端通信

$buffer = "connect";

$path = "/home/zhangy/www/test/";

while (true) {

// 接受一个socket连接

$connection = socket_accept($socket);

if(!$connection){

echo "connect fail";

}else{

echo "Socket connected\n";

// 向客户端传递一个信息数据

if ($buffer != "") {

echo "send data to client\n";

socket_write($connection, $buffer . "\n");

echo "Wrote to socket\n";

} else {

echo "no data in the buffer\n" ;

}

//从客户端取得数据

while($flag = @socket_recv($connection, $data, 2048, 0)){

if (false !== strpos($data,'filename:')){

$filename = substr($data,9);

$filename = $path.$filename;

//根据传过来的名子打开一个文件

$fp = fopen($filename,"wb");

continue;

}

fwrite($fp,$data);

}

fclose($fp);

}

socket_close($connection);

//关闭 socket

printf("Closed the socket\n");

}

?>

他的作用是接收数据,并将数据存储存起来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值