`

php 利用socket上传文件

    博客分类:
  • php
php 
阅读更多

http://blog.51yip.com/php/686.html

一,利用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 >   

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

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

  1. <?php  
  2. $fp  =  fsockopen ( "127.0.0.1" , 10008,  $errno $errstr , 10);  
  3.   
  4. $array  =  $_FILES [ 'photo' ];  
  5.   
  6. if (! $fp ){  
  7.     echo   "open fail" ;  
  8. }else {  
  9.   
  10.     if (! empty empty ( $array )){  
  11.   
  12.     $str 'filename:' . $array [ 'name' ];  
  13.     fwrite($fp , $str );  
  14.     $filename  =  $array [ 'tmp_name' ];  
  15.     $handle  =  fopen ( $filename "r" );  
  16.   
  17.     $contents  =  fread ( $handle filesize ( $filename ));  
  18.   
  19.     fwrite($fp , $contents );  
  20.     }  
  21.     echo   $fp ;  
  22. }  
  23. fclose($fp );  
  24. ?>  

他的作用是和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. ?>  

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

分享到:
评论

相关推荐

    socket-php文件分段上传

    总之,“socket-php文件分段上传”技术是解决大文件上传的有效方案,它利用了Socket通信的灵活性和HTML5的File API,实现了高效、可靠的文件传输。对于开发大型、高并发的Web应用,尤其是涉及到大量文件操作的场景,...

    flash+php实现批量上传文件,带进度条

    总的来说,这个项目利用Flash的多文件选择和进度显示能力,结合PHP的文件处理功能,实现了批量上传文件并带有进度条的特性。尽管现在Flash已经逐渐被HTML5取代,但理解这种技术实现对于理解现代Web开发的历史和技术...

    FTP多线程上传文件资料

    多线程FTP上传是指通过多个并发连接同时上传文件,以提高文件上传的速度和效率。这种技术尤其适用于大文件或大批量文件的传输,因为它可以充分利用网络带宽资源。 在实现FTP多线程上传时,我们需要考虑以下几个关键...

    php利用fsockopen GET/POST提交表单及上传文件

    PHP利用fsockopen函数进行GET和POST请求,以及如何通过fsockopen上传文件的知识点是本篇内容的核心。fsockopen是PHP内置的函数,它能够创建一个网络连接到指定主机的指定端口,允许开发者通过套接字进行原始的网络...

    flash+php拍照系统源码

    7. **安全考虑**:在实际部署时,需注意防止非法文件上传、权限控制以及服务器资源的合理利用,确保系统的安全性和稳定性。 综上,这个"Flash+PHP拍照系统源码"是一个完整的基于Web的图像捕捉和上传解决方案,涵盖...

    PHP实例开发源码-bt种子程序源码 php版.zip

    这个PHP实例是专门用于创建和管理BT种子的程序,可以帮助开发者理解如何利用PHP实现P2P文件传输的功能。 BT种子程序的核心功能包括生成和解析.torrent文件,以及参与BT网络中的数据交换。以下是对这些关键知识点的...

    PHP安全问题:远程溢出、DoS、safe_mode绕过漏洞.pdf

    **远程溢出**是PHP早期版本中一个严重的安全漏洞,尤其在PHP-4.1.2及以下版本中,文件上传功能可能导致远程缓冲区溢出,进而被攻击者利用。公开的攻击程序(如Packet Storm和Shadow Penguin提供的示例)展示了这一...

    php网络编程典型模块与实例精讲

    PHP内置了对FTP(文件传输协议)和SFTP(安全文件传输协议)的支持,使得文件上传下载、目录管理等功能的实现变得简单高效。这些模块不仅适用于网站文件的管理,也广泛用于自动化备份、数据同步等场景。 #### 4. ...

    PHP编程一百例(包含很多的实例)

    "PHP编程一百例"这个资源提供了丰富的实践案例,涵盖了多种常见的PHP应用场景,包括QQ在线状态检测、会员系统、聊天室构建、留言板功能以及文件上传等。这些实例可以帮助开发者更好地理解和运用PHP语言,提升实际...

    PHP经典案例注释详细

    7. **文件与目录操作**:PHP可以读取、写入、创建、删除文件和目录,这对于处理上传下载、生成静态页面等功能非常有用。 8. **网络编程**:PHP可以通过cURL库发送HTTP请求,实现数据的获取或提交,也可以通过...

    送你一个免费的PHP论坛.pdf

    免费虚拟主机“我要安家”提供了基础的Web服务,包括Linux操作系统(Fedora Core 1.0或2.0),Apache web服务器,PHP 4.3.8版本,以及MySQL 4.0.20数据库支持,但不支持mail函数和socket函数。虽然空间有限(100M...

    php 核心编程所有例程

    9. **文件系统操作**:在PHP中,可以进行文件读写、目录操作、文件上传下载等,这对于处理用户交互和数据存储非常重要。 10. **网络编程**:PHP也能进行网络通信,如HTTP请求、socket编程,可以实现API调用、...

    PHP5 权威教程 PDF

    5. **文件系统操作**:PHP5提供了一系列的文件系统函数,用于读写文件、创建目录、移动或删除文件,以及处理文件上传等操作。 6. **网络编程**:包括HTTP协议的处理,如发送HTTP请求,解析HTTP响应,使用cURL库进行...

    暗月技术小组培训专用php版

    此外,还可以利用cURL库进行远程数据交换,或使用fsockopen函数进行Socket编程。 9. **安全性**:在【暗月技术小组培训专用php版】中,免杀性能的优化表明了对Web安全的关注。开发者应了解常见的安全威胁,如XSS...

    PHP安全配置之实现安全的两个重点

    1. **远程溢出漏洞**:在PHP 4.1.2之前的版本中,存在文件上传远程缓冲区溢出漏洞,这允许攻击者上传恶意代码并执行。因此,保持PHP版本的更新至关重要。 2. **远程拒绝服务(DoS)漏洞**:PHP 4.2.0和4.2.1版本中...

    推荐一款php写的在线聊天软件

    10. **文件上传与分享**:集成云存储服务(如阿里云OSS或Amazon S3)实现文件的上传、下载和分享功能。 综上所述,构建一款基于PHP的在线聊天软件涉及到的技术栈广泛,涵盖了服务器端开发、前端界面设计、数据库...

    出入登记系统PHP源码演示,聊聊它的概念与特点.docx

    7. 图像处理和文件操作:PHP 可以处理图像,如缩略图生成、图像转换等,同时支持文件上传和下载功能。 8. PDF 生成:通过PHP,可以生成PDF文档,这对于报表生成和电子文档管理非常有用。 【出入登记系统PHP源码分析...

    php做的qvod播放客户端

    在PHP Qvod播放客户端中,开发者可能利用了PHP的文件系统操作功能来读取和处理视频文件,如获取文件元信息、切片等。此外,为了实现P2P传输,可能还涉及到网络编程,包括socket通信、HTTP或UDP协议的解析与构建,...

    先锋无组件上传类(无惧2.0杜绝上传漏洞修改版) v2004

    ***这个上传漏洞利用的原理只是针对form格式上传的asp和php脚本*** NC(Netcat)  用于提交数据包  DOS界面下运行:  NC -vv www.***.com 80&lt;1.txt  -vv: 回显  80: www端口  1.txt: 就是你要发送的...

Global site tag (gtag.js) - Google Analytics