php链接远程socket,php使用socket获取远程图片
步骤:
1,匹配URL中的主机名和文件部分
2,创建socket并连接到目标服务器
3,构造HTTP请求并发送
4,读取HTTP响应并解析
5,保存内容到文件并关闭socket连接
代码实现如下:
/*
* 使用socket获取远程资源(网页,图片等)
* url 资源URL
* savepath 资源的保存路径
* return true/false
*/
function get_remote_picture($url,$savepath="./"){
set_time_limit(0);
$pattern = '/(http:\/\/)?([^\/]+)(.+)/';
$res = preg_match($pattern, $url, $matches);
if($res == 0){
return false;
}
$host = "";//主机名
$file = "";//请求的文件
if(count($matches) == 3){
$host = $matches[1];
$file = $matches[2];
}else if(count($matches) == 4){
$host = $matches[2];
$file = $matches[3];
}else{
return false;
}
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
$res = socket_connect($socket,gethostbyname($host),80);
if(!$res){
//echo socket_strerror(socket_last_error($socket));
socket_close($socket);
return false;
}
$request = "";
$request .= "GET $file HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
$request .= "Connection: close\r\n\r\n";
$len = socket_write($socket,$request);
$response = "";
while($buf=socket_read($socket,512)){
if(strlen($buf) == 0){
break;
}
$response .= $buf;
}
if(strpos($response,"\r\n\r\n")){
$arr = explode("\r\n\r\n",$response);
if(!file_exists($savepath)){
@mkdir($savepath);
}
$savepath = rtrim($savepath,'/').'/';
file_put_contents($savepath.basename($file),$arr[1]);
}else{
socket_close($socket);
return false;
}
socket_close($socket);
return true;
}
/* 获取百度logo */
$url = "http://su.bdimg.com/static/superplus/img/logo_white.png";
$result = get_remote_picture($url);
if($result){
echo 'get remote picture success';
}else{
echo 'get remote picture failed';
}
php链接远程socket,php使用socket获取远程图片相关推荐
- java 读取 远程文件_利用JAVA获取远程文件及使用断点续传 供学习者使用
闲来没事,就做做,程序还是要多写才好@ 原理不说,文件方面及I/O方面,去BAIDU一下就知道,断点续传的原理也很简单,就是在原来已经下载的基础之上继续下载就可以了,用到了这么关键的一句:urlc.s ...
- scp命令获取远程文件
一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响 ...
- 【Android 逆向】Android 逆向通用工具开发 ( 网络模块开发 | SOCKET 网络套接字初始化 | 读取远程端 “Android 模拟器“ 信息 | 向远程端写出数据 )
文章目录 前言 一.SOCKET 网络套接字初始化 二.SOCKET 网络套接 读取远程端 ( Android 模拟器 ) 信息 三.SOCKET 网络套接 向远程端 ( Android 模拟器 ) ...
- java socket 远程调用_使用Socket反射Java流操作进行方法的远程调用(模拟RPC远程调用)...
写在前面 阅读本文首先得具备基本的Socket.反射.Java流操作的基本API使用知识:否则本文你可能看不懂... 服务端的端口监听 进行远程调用,那就必须得有客户端和服务端.服务端负责提供服务,客 ...
- java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据
全栈工程师开发手册 (作者:栾鹏) java教程全解 java实现socket连接,向指定主机指定端口发送socket数据,并获取响应数据 测试代码 public static void main(S ...
- 基于java+Socket+sqlserver的油液远程监控系统软件设计
基于java+Socket+sqlserver的油液远程监控系统软件设计 1.启动被监控端,打开指定的UDP端口号.用于读取命令. 2.被监控端读取命令(命令格式为ordername:port)ord ...
- PHP高效获取远程图片尺寸和大小(转)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
- php 获取远程图片尺寸,PHP高效获取远程图片尺寸和大小的实现方法
原标题:PHP高效获取远程图片尺寸和大小的实现方法 PHP高效获取远程图片尺寸和大小的实现方法 在这里分享一下自己的心得,希望和大家一起分享技术,如果有什么不足,还请大家指正.写出这篇目的,就是希望大 ...
- PHP高效获取远程图片尺寸和大小
/*** 获取远程图片的宽高和体积大小** @param string $url 远程图片的链接* @param string $type 获取远程图片资源的方式, 默认为 curl 可选 fread ...
最新文章
- Android API 中文 (51) —— ZoomButtonsController
- 口语学习Day1:天气
- PHP学习记录之会话处理(二)
- 系统安全运维 Server 2008 R2 事件查看器实现日志分析
- 计算机网络与网页制作教程,计算机网络与网页制作:Dreamweaver CS5案例教程/高等学校通识教育系列教材简介,目录书摘...
- BZOJ 1411Vijos 1544 : [ZJOI2009]硬币游戏【递推,快速幂】
- sqoop、datax几种导入导出
- Spring mvc @ RequestMapping
- leetcode 之Rotate List(18)
- 用友t+畅捷通使用方法_【财务人员必看干货】用友财务软件使用方法和快捷键大全!...
- php 时间转换时间戳_php时间戳与date格式转换
- IROS 2021最新开源!深度学习三维激光雷达动态物体分割
- 西门子840d高级编程手册_840D NC 高级编程简单介绍
- Python多继承及MRO顺序
- Automated SQL Injection Detection
- 规格模式 Specification Pattern
- web 开发最新技术
- 数字电路学习——三极管的使用
- 云端(Cloud)多租户网络技术
- 4.6 曲线拟合的最小二乘法
热门文章
- 使用JUnit 5进行更清洁的参数化测试
- guava 并发_Google Guava并发– ListenableFuture
- Intellij IDEA社区版中的SpringBoot入门
- eclipse juno_放弃Eclipse Juno
- jboss drools_JBoss Drools –入门
- Java注释教程– ULTIMATE指南(PDF下载)
- OptaPlanner –具有真实道路距离的车辆路线
- JAX-RS 2.0的新功能– @BeanParam批注
- 懒惰的JSF Primefaces数据表分页–第2部分
- JBoss AS 7.1.0.Final“ Thunder”发布-Java EE 6 Full Profile认证!