一,利用fsockopen来上传文件
以前我写过一篇关于socket通信原理的博文http://blog.51yip.com/php/673.html有兴趣的朋友可以看看,前面讲的那篇博文,socket的服务器和客户端都是要用php命令来运行的。平常我们上传文件是浏览本地文件,通过一个php程序将文件上传一个地方,这个时候我们用php命令来运行php程序就不方便了。这个时候我们可以用fsockopen来打开一个socket通道,并且可以通过浏览器来访问页面。下面有一个例子,大家可以试一下。
二,upload.html
查看复制打印?
1.<html>
2.<body>
3.<form action='image.php' method='post' name='form' enctype='multipart/form-data'>
4.<input type='file' name='photo'>
5.<input type=submit value='submit'>
6.</form>
7.</body>
8.</html>
<html>
<body>
<form action='image.php' method='post' name='form' enctype='multipart/form-data'>
<input type='file' name='photo'>
<input type=submit value='submit'>
</form>
</body>
</html>浏览本地文件上传到中间文件image.php
三,image.php来向socket传送数据
查看复制打印?
<?php
$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);
?>
<?php
$fp = fsockopen("127.0.0.1", 10008, $errno, $errstr, 10);
$array = 一,利用fsockopen来上传文件
以前我写过一篇关于socket通信原理的博文http://blog.51yip.com/php/673.html有兴趣的朋友可以看看,前面讲的那篇博文,socket的服务器和客户端都是要用php命令来运行的。平常我们上传文件是浏览本地文件,通过一个php程序将文件上传一个地方,这个时候我们用php命令来运行php程序就不方便了。这个时候我们可以用fsockopen来打开一个socket通道,并且可以通过浏览器来访问页面。下面有一个例子,大家可以试一下。
二,upload.html
查看复制打印?
<html>
<body>
<form action='image.php' method='post' name='form' enctype='multipart/form-data'>
<input type='file' name='photo'>
<input type=submit value='submit'>
</form>
</body>
</html>
<html>
<body>
<form action='image.php' method='post' name='form' enctype='multipart/form-data'>
<input type='file' name='photo'>
<input type=submit value='submit'>
</form>
</body>
</html>
浏览本地文件上传到中间文件image.php
三,image.php来向socket传送数据
查看复制打印?
<?php
$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接收到数据
查看复制打印?
<?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");
}
?>
<?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");
}
?>
他的作用是接收数据,并将数据存储存起来
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接收到数据
查看复制打印?
1.<?php
2.// 建立server端socket
3.$tcp = getprotobyname("tcp");
4.$socket = socket_create(AF_INET, SOCK_STREAM, $tcp);
5.socket_bind($socket, '127.0.0.1', 10008); //绑定要监听的端口
6.socket_listen($socket); //监听端口
7.8.//初始化一个数据,和客户端通信
9.$buffer = "connect";
10.$path = "/home/zhangy/www/test/";
11.while (true) {
12.// 接受一个socket连接
13.$connection = socket_accept($socket);
14.if(!$connection){
15.echo "connect fail";
16.}else{
17.echo "Socket connected\n";
18.// 向客户端传递一个信息数据
19.if ($buffer != "") {
20.echo "send data to client\n";
21.socket_write($connection, $buffer . "\n");
22.echo "Wrote to socket\n";
23.} else {
24.echo "no data in the buffer\n" ;
25.}
26.27.//从客户端取得数据
28.while($flag = @socket_recv($connection, $data, 2048, 0)){
29.if (false !== strpos($data,'filename:')){
30.$filename = substr($data,9);
31.32.$filename = $path.$filename;
33.//根据传过来的名子打开一个文件
34.$fp = fopen($filename,"wb");
35.continue;
36.}
37.fwrite($fp,$data);
38.}
39.fclose($fp);
40.}
41.42.socket_close($connection);
43.//关闭 socket
44.printf("Closed the socket\n");
45.}
46.?>
他的作用是接收数据,并将数据存储存起来
此文章由 http://www.ositren.com 收集整理 ,地址为:
http://www.ositren.com/htmls/67524.html