php socket so文件,php 利用socket上傳文件

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(!emptyempty($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");

}

?>

他的作用是接收數據,並將數據存儲存起來

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值