C語言實現http下載器(附代碼)

嵌入式大雜燴 2022-10-26 21:41

大家好,我是雜燴君。

本次給大家分享一個C語言實現http的下載器。比如做OTA升級功能時,我們能直接拿到的往往只是升級包的鏈接,需要我們自己去下載,這時候就需要用到http下載器。

這里分享一個:

功能:

1、支持chunked方式傳輸的下載

2、被重定向時能下載重定向頁面

3、要實現的接口為int http_download(char *url, char *save_path)

思路:

1、解析輸入的URL,分離出主機,端口號,文件路徑的信息

2、解析主機的DNS

3、填充http請求的頭部,給服務器發包

4、解析收到的http頭,提取狀態碼,Content-length, Transfer-Encoding等字段信息

(1)如果是普通的頭則進行接下來的正常收包流程

(2)如果狀態碼為302,則從頭里提取出重定向地址,用新的地址重新開始下載動作

(3)如果傳送方式是chunked的,則進行分段讀取數據并拼接

(4)如果是404或其他狀態碼則打印錯誤信息

缺陷:

  • 太多錯誤處理,讓代碼看起來不太舒服

其他:

1、如何移植到沒有文件系統的系統中?

修改sava_data接口里面的保存就好了

2、如何提高下載速度?

  • 增大讀寫buffer緩沖區
  • 改為多線程,使用Range字段分段讀取,最后再拼在一起

代碼:

/************************************************************
Copyright?(C),?2016,?Leon,?All?Rights?Reserved.
FileName:?download.c
coding:?UTF-8
Description:?實現簡單的http下載功能
Author:?Leon
Version:?1.0
Date:?2016-12-2?10:49:32
Function:

History:
????


#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#define?HOST_NAME_LEN???256
#define?URI_MAX_LEN?????2048
#define?RECV_BUF????????8192
#define?RCV_SND_TIMEOUT?(10*1000)???//收發數據超時時間(ms)

typedef?struct?{
????int?sock;???????????????????????//與服務器通信的socket
????FILE?*in;???????????????????????//sock描述符轉為文件指針,方便讀寫
????char?host_name[HOST_NAME_LEN];??//主機名
????int?port;???????????????????????//主機端口號
????char?uri[URI_MAX_LEN];??????????//資源路徑
????char?buffer[RECV_BUF];??????????//讀寫緩沖
????int?status_code;????????????????//http狀態碼
????int?chunked_flag;???????????????//chunked傳輸的標志位
????int?len;????????????????????????//Content-length里的長度
????char?location[URI_MAX_LEN];?????//重定向地址
????char?*save_path;????????????????//保存內容的路徑指針
????FILE?*save_file;????????????????//保存內容的文件指針
????int?recv_data_len;??????????????//收到數據的總長度
????time_t?start_recv_time;?????????//開始接受數據的時間
????time_t?end_recv_time;???????????//結束接受數據的時間
}?http_t;

/*?打印宏?*/
#define?MSG_DEBUG???0x01
#define?MSG_INFO????0x02
#define?MSG_ERROR???0x04

static?int?print_level?=?/*MSG_DEBUG?|*/?MSG_INFO?|?MSG_ERROR;

#define?lprintf(level,?format,?argv...)?do{?????\
????if(level?&?print_level)?????\
????????printf("[%s][%s(%d)]:"format,?#level,?__FUNCTION__,?__LINE__,?##argv);??\
}while(0)


#define?MIN(x,?y)?((x)?>?(y)???(y)?:?(x))

#define?HTTP_OK?????????200
#define?HTTP_REDIRECT???302
#define?HTTP_NOT_FOUND??404

/*?不區分大小寫的strstr?*/
char?*strncasestr(char?*str,?char?*sub)
{
????if(!str?||?!sub)
????????return?NULL;

????int?len?=?strlen(sub);
????if?(len?==?0)
????{
????????return?NULL;
????}

????while?(*str)
????{
????????if?(strncasecmp(str,?sub,?len)?==?0)
????????{
????????????return?str;
????????}
????????++str;
????}
????return?NULL;
}

/*?解析URL,?成功返回0,失敗返回-1?*/
/*?http://127.0.0.1:8080/testfile?*/
int?parser_URL(char?*url,?http_t?*info)
{
????char?*tmp?=?url,?*start?=?NULL,?*end?=?NULL;
????int?len?=?0;

????/*?跳過http://?*/
????if(strncasestr(tmp,?"http://"))
????{???
????????tmp?+=?strlen("http://");
????}
????start?=?tmp;
????if(!(tmp?=?strchr(start,?'/')))
????{
????????lprintf(MSG_ERROR,?"url?invaild\n");
????????return?-1;??????
????}
????end?=?tmp;

????/*解析端口號和主機*/
????info->port?=?80;???//先附默認值80

????len?=?MIN(end?-?start,?HOST_NAME_LEN?-?1);
????strncpy(info->host_name,?start,?len);
????info->host_name[len]?=?'\0';

????if((tmp?=?strchr(start,?':'))?&&?tmp?????{
????????info->port?=?atoi(tmp?+?1);
????????if(info->port?<=?0?||?info->port?>=?65535)
????????{
????????????lprintf(MSG_ERROR,?"url?port?invaild\n");
????????????return?-1;
????????}
????????/*?覆蓋之前的賦值?*/
????????len?=?MIN(tmp?-?start,?HOST_NAME_LEN?-?1);
????????strncpy(info->host_name,?start,?len);
????????info->host_name[len]?=?'\0';
????}

????/*?復制uri?*/
????start?=?end;
????strncpy(info->uri,?start,?URI_MAX_LEN?-?1);

????lprintf(MSG_INFO,?"parse?url?ok\nhost:%s,?port:%d,?uri:%s\n",?
????????info->host_name,?info->port,?info->uri);
????return?0;
}

/*?dns解析,返回解析到的第一個地址,失敗返回-1,成功則返回相應地址?*/
unsigned?long?dns(char*?host_name)
{

????struct?hostent*?host;
????struct?in_addr?addr;
????char?**pp;

????host?=?gethostbyname(host_name);
????if?(host?==?NULL)
????{
????????lprintf(MSG_ERROR,?"gethostbyname?%s?failed\n",?host_name);
????????return?-1;
????}

????pp?=?host->h_addr_list;

????if?(*pp!=NULL)
????{
????????addr.s_addr?=?*((unsigned?int?*)*pp);
????????lprintf(MSG_INFO,?"%s?address?is?%s\n",?host_name,?inet_ntoa(addr));
????????pp++;
????????return?addr.s_addr;
????}

????return?-1;
}

/*?設置發送接收超時?*/
int?set_socket_option(int?sock)
{
????struct?timeval?timeout;

????timeout.tv_sec?=?RCV_SND_TIMEOUT/1000;
????timeout.tv_usec?=?RCV_SND_TIMEOUT%1000*1000;
????lprintf(MSG_DEBUG,?"%ds?%dus\n",?(int)timeout.tv_sec,?(int)timeout.tv_usec);
????//設置socket為非阻塞
????//?fcntl(sock?,F_SETFL,?O_NONBLOCK);?//以非阻塞的方式,connect需要重新處理

????//?設置發送超時
????if(-1?==?setsockopt(sock,?SOL_SOCKET,?SO_SNDTIMEO,?(char?*)&timeout,?
????????????sizeof(struct?timeval)))
????{
????????lprintf(MSG_ERROR,?"setsockopt?error:?%m\n");
????????return?-1;
????}

????//?設置接送超時
????if(-1?==?setsockopt(sock,?SOL_SOCKET,?SO_RCVTIMEO,?(char?*)&timeout,?
????????????sizeof(struct?timeval)))
????{
????????lprintf(MSG_ERROR,?"setsockopt?error:?%m\n");
????????return?-1;
????}

????return?0;
}

/*?連接到服務器?*/
int?connect_server(http_t?*info)
{
????int?sockfd;
????struct?sockaddr_in?server;
????unsigned?long?addr?=?0;
????unsigned?short?port?=?info->port;

????sockfd?=?socket(AF_INET,?SOCK_STREAM,?0);
????if?(-1?==?sockfd)
????{
????????lprintf(MSG_ERROR,?"socket?create?failed\n");
????????goto?failed;
????}

????if(-1?==?set_socket_option(sockfd))
????{
????????goto?failed;
????}

????if?((addr?=?dns(info->host_name))?==?-1)
????{
????????lprintf(MSG_ERROR,?"Get?Dns?Failed\n");
????????goto?failed;
????}
????memset(&server,?0,?sizeof(server));
????server.sin_family?=?AF_INET;?
????server.sin_port?=?htons(port);?
????server.sin_addr.s_addr?=?addr;

????if?(-1?==?connect(sockfd,?(struct?sockaddr?*)&server,?sizeof(struct?sockaddr)))
????{
????????lprintf(MSG_ERROR,?"connect?failed:?%m\n");
????????goto?failed;
????}

????info->sock?=?sockfd;
????return?0;

failed:
????if(sockfd?!=?-1)
????????close(sockfd);
????return?-1;
}

/*?發送http請求?*/
int?send_request(http_t?*info)
{
????int?len;

????memset(info->buffer,?0x0,?RECV_BUF);
????snprintf(info->buffer,?RECV_BUF?-?1,?"GET?%s?HTTP/1.1\r\n"
????????"Accept:?*/*\r\n"
????????"User-Agent:?Mozilla/5.0?(compatible;?MSIE?5.01;?Windows?NT?5.0)\r\n"
????????"Host:?%s\r\n"
????????"Connection:?Close\r\n\r\n",?info->uri,?info->host_name);

????lprintf(MSG_DEBUG,?"request:\n%s\n",?info->buffer);
????return?send(info->sock,?info->buffer,?strlen(info->buffer),?0);
}

/*?解析http頭?*/
int?parse_http_header(http_t?*info)
{
????char?*p?=?NULL;

????//?解析第一行
????fgets(info->buffer,?RECV_BUF,?info->in);
????p?=?strchr(info->buffer,?'?');
????//簡單檢查http頭第一行是否合法
????if(!p?||?!strcasestr(info->buffer,?"HTTP"))
????{
????????lprintf(MSG_ERROR,?"bad?http?head\n");
????????return?-1;
????}
????info->status_code?=?atoi(p?+?1);???
????lprintf(MSG_DEBUG,?"http?status?code:?%d\n",?info->status_code);

????//?循環讀取解析http頭
????while(fgets(info->buffer,?RECV_BUF,?info->in))
????{
????????//?判斷頭部是否讀完
????????if(!strcmp(info->buffer,?"\r\n"))
????????{
????????????return?0;???/*?頭解析正常?*/
????????}
????????lprintf(MSG_DEBUG,?"%s",?info->buffer);
????????//?解析長度?Content-length:?554
????????if(p?=?strncasestr(info->buffer,?"Content-length"))
????????{
????????????p?=?strchr(p,?':');
????????????p?+=?2;?????//?跳過冒號和后面的空格
????????????info->len?=?atoi(p);
????????????lprintf(MSG_INFO,?"Content-length:?%d\n",?info->len);
????????}
????????else?if(p?=?strncasestr(info->buffer,?"Transfer-Encoding"))
????????{
????????????if(strncasestr(info->buffer,?"chunked"))
????????????{
????????????????info->chunked_flag?=?1;
????????????}
????????????else
????????????{
????????????????/*?不支持其他編碼的傳送方式?*/
????????????????lprintf(MSG_ERROR,?"Not?support?%s",?info->buffer);
????????????????return?-1;
????????????}
????????????lprintf(MSG_INFO,?"%s",?info->buffer);
????????}
????????else?if(p?=?strncasestr(info->buffer,?"Location"))
????????{
????????????p?=?strchr(p,?':');
????????????p?+=?2;?????//?跳過冒號和后面的空格
????????????strncpy(info->location,?p,?URI_MAX_LEN?-?1);
????????????lprintf(MSG_INFO,?"Location:?%s\n",?info->location);
????????}
????}
????lprintf(MSG_ERROR,?"bad?http?head\n");
????return?-1;??/*?頭解析出錯?*/
}

/*?保存服務器響應的內容?*/
int?save_data(http_t?*info,?const?char?*buf,?int?len)
{
????int?total_len?=?len;
????int?write_len?=?0;

????//?文件沒有打開則先打開
????if(!info->save_file)
????{
????????info->save_file?=?fopen(info->save_path,?"w");
????????if(!info->save_file)
????????{
????????????lprintf(MSG_ERROR,?"fopen?%s?error:?%m\n",?info->save_path);
????????????return?-1;
????????}
????}

????while(total_len)
????{
????????write_len?=?fwrite(buf,?sizeof(char),?len,?info->save_file);
????????if(write_len?????????{
????????????lprintf(MSG_ERROR,?"fwrite?error:?%m\n");
????????????return?-1;
????????}
????????total_len?-=?write_len;
????}
}

/*?讀數據?*/
int?read_data(http_t?*info,?int?len)
{
????int?total_len?=?len;
????int?read_len?=?0;
????int?rtn_len?=?0;

????while(total_len)
????{
????????read_len?=?MIN(total_len,?RECV_BUF);
????????//?lprintf(MSG_DEBUG,?"need?read?len:?%d\n",?read_len);
????????rtn_len?=?fread(info->buffer,?sizeof(char),?read_len,?info->in);
????????if(rtn_len?????????{
????????????if(ferror(info->in))
????????????{
????????????????if(errno?==?EINTR)?/*?信號中斷了讀操作?*/
????????????????{
????????????????????;???/*?不做處理繼續往下走?*/
????????????????}
????????????????else?if(errno?==?EAGAIN?||?errno?==?EWOULDBLOCK)?/*?超時?*/
????????????????{
????????????????????lprintf(MSG_ERROR,?"socket?recvice?timeout:?%dms\n",?RCV_SND_TIMEOUT);
????????????????????total_len?-=?rtn_len;
????????????????????lprintf(MSG_DEBUG,?"read?len:?%d\n",?rtn_len);
????????????????????break;
????????????????}
????????????????else????/*?其他錯誤?*/
????????????????{
????????????????????lprintf(MSG_ERROR,?"fread?error:?%m\n");
????????????????????break;
????????????????}
????????????}
????????????else????/*?讀到文件尾?*/
????????????{
????????????????lprintf(MSG_ERROR,?"socket?closed?by?peer\n");
????????????????total_len?-=?rtn_len;
????????????????lprintf(MSG_DEBUG,?"read?len:?%d\n",?rtn_len);
????????????????break;
????????????}
????????}

????????//?lprintf(MSG_DEBUG,?"?%s\n",?info->buffer);
????????total_len?-=?rtn_len;
????????lprintf(MSG_DEBUG,?"read?len:?%d\n",?rtn_len);
????????if(-1?==?save_data(info,?info->buffer,?rtn_len))
????????{
????????????return?-1;
????????}
????????info->recv_data_len?+=?rtn_len;
????}
????if(total_len?!=?0)
????{
????????lprintf(MSG_ERROR,?"we?need?to?read?%d?bytes,?but?read?%d?bytes?now\n",?
????????????len,?len?-?total_len);
????????return?-1;
????}
}

/*?接收服務器發回的chunked數據?*/
int?recv_chunked_response(http_t?*info)
{
????long?part_len;

????//有chunked,content?length就沒有了
????do{
????????//?獲取這一個部分的長度
????????fgets(info->buffer,?RECV_BUF,?info->in);
????????part_len?=?strtol(info->buffer,?NULL,?16);
????????lprintf(MSG_DEBUG,?"part?len:?%ld\n",?part_len);
????????if(-1?==?read_data(info,?part_len))
????????????return?-1;

????????//讀走后面的\r\n兩個字符
????????if(2?!=?fread(info->buffer,?sizeof(char),?2,?info->in))
????????{
????????????lprintf(MSG_ERROR,?"fread?\\r\\n?error?:?%m\n");
????????????return?-1;
????????}
????}while(part_len);
????return?0;
}

/*?計算平均下載速度,單位byte/s?*/
float?calc_download_speed(http_t?*info)
{
????int?diff_time?=?0;?
????float?speed?=?0.0;

????diff_time?=?info->end_recv_time?-?info->start_recv_time;
????/*?最小間隔1s,避免計算浮點數結果為inf?*/
????if(0?==?diff_time)
????????diff_time?=?1;
????speed?=?(float)info->recv_data_len?/?diff_time;

????return??speed;
}

/*?接收服務器的響應數據?*/
int?recv_response(http_t?*info)
{
????int?len?=?0,?total_len?=?info->len;

????if(info->chunked_flag)
????????return?recv_chunked_response(info);

????if(-1?==?read_data(info,?total_len))
????????return?-1;

????return?0;
}

/*?清理操作?*/
void?clean_up(http_t?*info)
{
????if(info->in)
????????fclose(info->in);
????if(-1?!=?info->sock)
????????close(info->sock);
????if(info->save_file)
????????fclose(info->save_file);
????if(info)
????????free(info);
}

/*?下載主函數?*/
int?http_download(char?*url,?char?*save_path)
{
????http_t?*info?=?NULL;
????char?tmp[URI_MAX_LEN]?=?{0};

????if(!url?||?!save_path)
????????return?-1;

????//初始化結構體
????info?=?malloc(sizeof(http_t));
????if(!info)
????{
????????lprintf(MSG_ERROR,?"malloc?failed\n");
????????return?-1;
????}
????memset(info,?0x0,?sizeof(http_t));
????info->sock?=?-1;
????info->save_path?=?save_path;

????//?解析url
????if(-1?==?parser_URL(url,?info))
????????goto?failed;

????//?連接到server
????if(-1?==?connect_server(info))
????????goto?failed;

????//?發送http請求報文
????if(-1?==?send_request(info))
????????goto?failed;

????//?接收響應的頭信息
????info->in?=?fdopen(info->sock,?"r");
????if(!info->in)
????{
????????lprintf(MSG_ERROR,?"fdopen?error\n");
????????goto?failed;
????}

????//?解析頭部
????if(-1?==?parse_http_header(info))
????????goto?failed;

????switch(info->status_code)
????{
????????case?HTTP_OK:
????????????//?接收數據
????????????lprintf(MSG_DEBUG,?"recv?data?now\n");
????????????info->start_recv_time?=?time(0);
????????????if(-1?==?recv_response(info))
????????????????goto?failed;

????????????info->end_recv_time?=?time(0);
????????????lprintf(MSG_INFO,?"recv?%d?bytes\n",?info->recv_data_len);
????????????lprintf(MSG_INFO,?"Average?download?speed:?%.2fKB/s\n",?
????????????????????calc_download_speed(info)/1000);
????????????break;
????????case?HTTP_REDIRECT:
????????????//?重啟本函數
????????????lprintf(MSG_INFO,?"redirect:?%s\n",?info->location);
????????????strncpy(tmp,?info->location,?URI_MAX_LEN?-?1);
????????????clean_up(info);
????????????return?http_download(tmp,?save_path);

????????case?HTTP_NOT_FOUND:
????????????//?退出
????????????lprintf(MSG_ERROR,?"Page?not?found\n");
????????????goto?failed;
????????????break;

????????default:
????????????lprintf(MSG_INFO,?"Not?supported?http?code?%d\n",?info->status_code);
????????????goto?failed;
????}

????clean_up(info);
????return?0;
failed:
????clean_up(info);
????return?-1;
}

/****************************************************************************
測試用例:
(1)chunked接收測試
./a.out?"http://www.httpwatch.com/httpgallery/chunked/chunkedimage.aspx"?test.aspx
(2)重定向測試
./a.out?"192.168.10.1/main.html"?test.txt
(3)錯誤輸入測試
./a.out?"32131233"?test.txt
(4)根目錄輸入測試
./a.out?"www.baidu.com/"?test.txt
(5)端口號訪問測試
./a.out?"192.168.0.200:8000/FS_AC6V1.0BR_V15.03.4.12_multi_TD01.bin"?test.txt
****************************************************************************/


int?main(int?argc,?char?*argv[])
{
????if(argc?3)
????????return?-1;

????http_download(argv[1],?argv[2]);
????return?0;
}
版權聲明:本文為CSDN博主「普朗克常量」的原創文章,遵循CC?4.0?BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013401853/article/details/53434167

版權聲明:本文來源網絡,免費傳達知識,版權歸原作者所有。如涉及作品版權問題,請聯系我進行刪除。

注意

由于微信公眾號近期改變了推送規則,為了防止找不到,可以星標置頂,這樣每次推送的文章才會出現在您的訂閱列表里。

猜你喜歡:

嵌入式設備AP配網實例分享

嵌入式Linux單板連接飛燕物聯網平臺

分享一種靈活性很高的協議格式(附代碼例子)

嵌入式大雜燴周記 | 第 16 期

嵌入式大雜燴周記 | 第 15 期

訪問非法內存為什么不會出錯?

嵌入式大雜燴周記 | 第 14 期

分享幾個實用的代碼片段(第二彈)

分享一種你可能不知道的bug定位方法

分享一種修改配置文件的方法

《嵌入式大雜燴周記第 13 期:lz4》

《嵌入式并行多線程處理器,了解一下!》

《分享一種修改配置文件的方法》

《分享幾個實用的代碼片段(附代碼例子)》

《廢舊板子再利用:搭建無線調試環境!》

《嵌入式段錯誤的3種調試方法匯總!》

《簡說TCP通信非阻塞接收(附代碼例子)》

《TCP通信常用接口的使用封裝》

《嵌入式軟件中,總線錯誤的坑?替大家先踩一步》

《分享嵌入式軟件調試方法及幾個有用的工具!》

《分享兩點提高編程能力的建議!》


在公眾號聊天界面回復1024,可獲取嵌入式資源;回復?m?,可查看文章匯總

嵌入式大雜燴 專注于嵌入式技術,包括但不限于C/C++、嵌入式、物聯網、Linux等編程學習筆記,同時,內包含大量的學習資源。歡迎關注,一同交流學習,共同進步!
評論
  • 摘要防爆自控系統同時布設本安信號、工業總線、動力供電三類線路,僅依靠標識標牌管控插接極易出現人為錯插問題,高壓動力回路竄入本安弱電回路會突破安全柵限能標準,產生點火風險。依托 A、D、K 標準化機械防呆編碼體系,搭配護套顏色區分管理,適配 3 針 3 孔免焊接冷壓增安型防爆航插、5PIN 總線防爆航空插頭、8 芯焊接防爆法蘭插座的選型使用,從物理結構層面杜絕防爆接近開關連接器、防爆傳感器航插接頭混用插接問題,補齊防爆系統被動安全防護體系。關鍵詞圓形防爆連接器,防呆編碼防爆航插,防爆航空插頭,防爆
    kyfbest科迎法電氣 2026-07-31 18:29 376瀏覽
  • 文:杜杰編輯:侯煜當地時間7月28日,美國特朗普政府落地最新科技封鎖政策,美國聯邦通信委員會(FCC)正式更新《受管制清單》,新增兩大類設備——境外生產的先進機器人設備、境外生產的聯網電力逆變器。FCC在官方情況說明書中明確,該類境外制造產品,“會對美國國家安全或美國民眾的人身安全構成無法承受的風險”。本次新規設置明確豁免機制:經美國國防部(DoW)、電力逆變器品類經美國國土安全部(DHS)審核并授予“有條件批準”,認定對應設備品類不存在重大安全風險,即可獲得準入豁免。同時政策嚴格執行新老劃斷原
    華爾街科技眼 2026-08-03 21:28 290瀏覽
  •                                                                        
    廣州鐵金剛 2026-08-06 17:44 35852瀏覽
  • 在芯片總成本中占比不到 1%,卻可能因一處品質偏差導致整片晶圓報廢——半導體切割/研磨膠帶,正隨著先進封裝的爆發,成為封測產線選型中最謹慎對待的耗材之一。但鮮有人注意到,決定這層膠帶性能上限的,是上游一層更薄的基膜。這個長期由日本企業主導的隱形環節,正在出現國產突圍的信號。一、需求之變:先進封裝與“韜定律”重塑膠帶市場AI 算力芯片、HBM 高帶寬存儲、Chiplet 芯粒等先進封裝產品持續放量,國內封測產線擴產節奏不減。作為晶圓減薄與切割工序的必需耗材,晶圓膠帶的需求同步擴容。據 QYRese
    芯膜前沿 2026-07-31 16:35 357瀏覽
  • 導語在現代高速數字電路設計中,信號的完整性已不僅是理想波形推演,而是一場與物理非理想特性正面博弈的工程實踐。濾波器芯片作為凈化傳輸鏈路的關鍵屏障,其核心挑戰在于:能否有效識別并濾除那些隱匿在電平跳變過程中的亞納秒級瞬態脈沖干擾,這類干擾持續極短,卻足以在高速鏈路中引發誤觸發。然而,傳統函數發生器受限于采樣率與邊沿速率,根本無法忠實復現如此狹窄且陡峭的異常波形。針對此困境,德思特TS-AWG7000系列任意波形發生器以17 GS/s采樣率與50 ps原生邊沿速度,為瞬態脈沖提供精細刻畫,配合SPG
    德思特測試測量 2026-08-05 14:06 5瀏覽
  • 做藍牙音箱的工程師大概都碰過這個局面。產品要連手機放歌,要本地播開機提示音和按鍵音,還要接 App 做配網和狀態上報。三件事拆開,早先的常規做法是音頻藍牙一顆料、數傳藍牙一顆料、本地播放再掛一顆小 MCU 加一片 Flash。板子越畫越大,BOM 越算越貴,待機電流和固件工作量也跟著漲。WT2605C 出來以后,這套需求可以集成到一顆芯片,就是 WT2605C-32N,該芯片采用QFN32 封裝,4×4 毫米,把音頻藍牙、BLE 數傳和 MP3 本地播放三樣全包了。對藍牙音箱來說,最實在的好處就
    唯創知音語音芯片 2026-08-06 15:14 177瀏覽
  •        很多人只見過封裝在SMD外殼里的小尺寸晶振,卻不知道一顆2016、1612甚至1210封裝的微型石英晶振,從一塊巴掌大的石英原礦,到最終能穩定起振的成品,要經過十幾道精密工序。它內部的石英晶片厚度最薄不到20微米,比普通A4紙的1/5還薄,整個生產過程里哪怕0.1微米的誤差,都會直接廢掉整批產品,這也是小尺寸晶振過去長期依賴進口,國內廠商花了十幾年才啃下量產硬骨頭的核心原因。1. 原石定向切割:0.01度的角度誤差都不能有小尺寸晶振的第一步,
    TKD泰晶科技 2026-08-07 08:43 240瀏覽
  • 在EMC測試過程中,傳導發射(Conducted Emission,CE)超標是工程師最常遇到的問題之一。更令人頭疼的是,同樣的超標曲線背后,可能對應著完全不同的干擾機理:有的是差模噪聲沿電源回路傳播,有的是共模電流通過寄生路徑耦合,還有些問題甚至并非來自電源本身,而是負載、電纜布局或接地結構引起的連鎖反應。 · 150kHz~1MHz 超標:多為差模噪聲為主,干擾沿火線-零線回路傳輸。 · 1MHz~30MHz 超標:通常共模噪聲占主導,干擾通過火線/零線對地回路傳播。 如果條件允許,用電流探
    譽磁電磁兼容EMC 2026-07-31 18:45 479瀏覽
  • 在前六期中,我們已經分別討論了 CRA 的適用范圍、整體影響、漏洞通報義務、風險評估與技術文檔證據鏈、第三方組件與 SBOM 供應鏈治理,以及產品上市后的支持期、安全更新、用戶說明和終止支持管理。到這里,企業已經能夠回答幾個核心問題:產品是否落入 CRA 適用范圍,產品由哪些組件構成,企業如何證明自己在設計、開發和上市前采取了必要的安全措施,以及產品上市后如何持續維護和安全下線。但對于真正準備落地 CRA 合規的企業來說,還有一個更現實的問題:CRA 的法規條文相對原則化,企業應當如何把“網絡安
    虹科云科技 2026-08-03 16:51 85244瀏覽
  • 產品使用18V供電,配套4串鋰離子電池,需要設計一個充電器。因為輸入18V,電池最高 16.8V,壓差僅 1.2V。因為壓差太小。使用開關型的充電控制芯片不穩定。嘗試自行設計一個。整體采用分立三極管 + TL431架構,分4個功能單元:使能控制回路、限流環路、TL431 精密恒壓反饋環路、PNP 功率管主功率輸出回路;實現完整鋰電池充電邏輯。使能控制回路按鍵按下:5V 電壓經 R12 (2kΩ) 送入 NPN 管 Q3 基極,Q3 飽和導通,對地拉低 R1、R2 組成的分壓控制節點電位;該節點直
    southcreek 2026-08-07 13:45 182瀏覽
  • ?摘要:低價大流量卡正全面退市,政策收緊已成定局。面對傳統號卡的不確定性,隨身WiFi憑借穩定連接、多設備共享、獨立設備和靈活套餐等優勢,成為務實可靠的備選方案。1、流量卡黃金時代要結束了通信行業正迎來一場前所未有的“地震式”調整——曾讓無數用戶追捧的低價大流量卡,正在全速退出各大平臺。這早已不是一次普通的競合,而是一場趨勢性的行業洗牌。回望過去,19元200G的神卡,那時真是“睡著都能笑醒”,便宜到不敢相信,爽到忍不住炫耀。那些日子,好像隨便刷、隨便看,流量自由觸手可及。可如今,回頭再看,那種
    愛上電路設計 2026-08-03 10:21 128799瀏覽
  • 智能寵物用品這幾年快速普及,自動清理幾乎成了智能貓砂盆的標配。貓咪用完離場,設備自動翻轉清理,養寵家庭省去了每天彎腰清理的麻煩。但自動清理的第一步,是先準確判斷貓到底在不在盆里。這個看似簡單的問題,在小空間里并不容易做好。近場檢測的痛點:距離太遠反而誤事貓砂盆內部空間有限。如果傳感器的檢測距離設得偏大,盆外路過的貓、人甚至物品都會被誤判為貓在盆內,結果該清理時不清理、不該清理時亂清理,體驗直接崩壞。這類產品的核心訴求其實就一句話:近距離、小范圍、精準識別,不能有半點誤判。常規感應方案常因檢測距離
    唯創知音語音芯片 2026-07-31 16:51 295瀏覽
  •     長期專注WiFi領域,也算是行業老兵了!同行閑聊中,時不時能提起我和我們!從疫情起,國產替代風生水起,起起落落,大浪淘沙,生存下來的都是強者!    WiFi模塊應用廣泛,對于高端市場和特定市場,要求WIFI模塊需要過CE/FCC之類的認證,也就是說沒有認證的模塊,不具備導入產品設計.接下來就和大家聊聊認證模塊選型參考!    WIFi模塊硬件方面主要考慮以下九點特性:    1
    納拓科技 2026-07-31 17:56 234瀏覽
  • 在物聯網從“萬物互聯”邁向“萬物智聯”的進程中,LTE Cat.1憑借其在速率、成本與網絡覆蓋之間的完美平衡,正成為中低速物聯網市場的絕對主力。隨著2G/3G網絡的逐步退網以及新國標對終端設備智能化、定位功能的強制要求,Cat.1模組迎來了爆發式的增長窗口。在這一關鍵節點,基于華為海思Hi2131芯片設計的LTE Cat.1模組,憑借其在能效、射頻、架構及物理規格上的底層創新,成功打破了“高性能必高功耗”的傳統魔咒,為行業提供了極具競爭力的連接最優解。核心技術優勢:重塑Cat.1能效與連接標桿海
    用戶1778981989717 2026-08-05 21:04 143瀏覽
  • 摘要在防爆電氣設計中,只參照芯數選型而忽略額定載流量,長期滿負荷運行會出現插頭發熱、接觸面氧化、IP67 密封受熱老化等問題。結合常用 3 針 3 孔、4 芯、5PIN、8PIN 圓形防爆連接器,制作分級電流參數對照表,區分冷壓免焊接、焊接兩種接線結構的安全載流數值,設置合理電流冗余系數,搭配使用環境修正參數,規范防爆接近開關連接器、防爆法蘭插座的選型計算方式。關鍵詞圓形防爆連接器,載流參數表,防爆法蘭插座,防爆端子接頭,IP67 防爆防水接插件1 產品概述圓形防爆連接器觸點載流能力由插針直徑、
    kyfbest科迎法電氣 2026-08-03 09:18 128604瀏覽
我要評論
0
點擊右上角,分享到朋友圈 我知道啦
請使用瀏覽器分享功能 我知道啦
主站蜘蛛池模板: 蜜桃成熟时33d ed2k| 三边坡是哪个国家| 河南大象新闻| 美国的忌讳1-5| 国足vs澳大利亚直播在线观看| 战狼6老姨免费观看电视剧| 六福客栈电影国语版免费观看| 齐天大圣孙悟空陈浩民版| 赤坂丽电影牙医姐妹无删在线观看| 保罗波茨| 《驯服小峓子2免费观看| 完全饲育之爱的40天| 芭比之时尚奇迹中文| 家属6| 视频在线观看免费高清| 一本之道| 这里发现爱电视剧| 亲爱的电视剧免费播放| 闯关东52集全集高清免费| 日剧《和讨厌的部长》中字| 电视剧小娘惹全集观看| 慢性呕吐实验室 下载| 异形:人族的统治| 日本jizz视频| 《香港奇案之吸血贵利王》电影| 正在播放: JUL-975 没有我丈夫的五天,我被命令禁欲到第一个晚上,我的性岳父对 | 朋友的尤物人妻| 洪雅县| 男子发明喂鸡神器 网友:费鸡头| 西游记续集全集| 朋友和妈妈| 初恋优酷| 超凡蜘蛛侠2在线观看| 斗罗大陆动漫147集免费观看| 百花缭乱无修版| 美国伦理片男按摩师| 法证先锋5粤语版免费观看| 《还债十日》| 西游记之孙悟空三打白骨精下载| 《农场保卫战》满天星在线播放| 法国空乘4完整| 九龙坡区| 神笔马亮在线观看喜剧| 霍比特人1:意外之旅| 我的世界天堂| 新奥特曼在线观看免费| 和部长一起去出差旅电影叫什么名字| 金瓶梅迅雷下载地址| 生死决断秋瓷炫几分出场| 宇宙战舰大和号复活| 上司趁丈夫不在家来拜| 伊战启示录| 三狼奇案| 她来自胡志明| 三少爷的剑百度云资源| 高清《良师男友》电视剧| 木下和雅| 需需爸爸的种子| 电视剧迷雾重重| 按摩店的待遇1电影| 韩国朋友的妈妈在线观看| 360大佬爱上我第一季完整版| 火云传奇| 电影斯巴达克斯第四季免费观看| 斗罗大陆第144集免费观看| 煎饼侠 电影| 女超人麦乐迪电影无删减在线观看完整免费 | 快乐向前冲2013年度总决赛| 复仇者之死在线观看| 军嫂逆袭短剧全集| 因爱富有| 爱我几何《莫妮卡》在线观看| 我的辅导老师| 罪域15| 《诱人的女房东3》电影| 全职法师4| 夺帅百度影音| 《变态性刑房3》电影| 樱蓝高校男公关部| 仁心无悔短剧免费播放| 铜铜钢铿锵锵锵免费观看高清免费观| 高考结束儿子表白妈妈| 《夫妻的世界》电视剧 | 隐形人魔| 王府主母:深宅掌权短剧全集 | 公与3个媳HD| 色戒删除的13分钟| 入戏 曹格| 和空姐一起的日子下载| 海之声电影在线观看免费完整高清原声| JEALOUSVUE第一次| 1987版《娃娃脸》免费观看| 九九电视剧免费观看| 法国足球宝贝在线观看完整版| 官人我要之极乐宝鉴2| 意外来客| 妓院里的中国姑娘| 莫言被踢出作协| 天才儿子腹黑娘亲| 《女律师替丈夫还钱》电影免费观看| 电视剧神秘人质全集免费播放| 勾魂恶梦在线| 我的游泳女老师| 大梦归离40集全免费影视大全| 武打电影免费观看高清完整| 《法国空乘5》电影免费观看| 《克里斯蒂的秘密》电影在线观看| 绅士和小姐| 禁忌结局-9| 花蜜花液汁水野战高H动漫| 大人物电影| 一起愁愁30集高清播放在线| 好想做一次电视剧完整版| 火影忍者论坛52pk| 修理工的欲望电影| 罗娜艳情录经典电影免费观看 | 《特殊游泳教练》中文版| 海洋之城| 吕布戏貂蝉| 丰满的继牳性教育| 斯嘉丽约翰逊梯震| 背着善宰跑电视剧免费观看| 妙手房术欧洲版谁演的| 爱情悠悠药草香粤语| 一家人不说两家话| 《丈夫请社长来家吃饭》在线播放 | 回南天电影在线观看免费播放| 肯德桑德兰满天星免费观看| 隔壁的邻居免费观看中文| 电影 搜索| 三年大片大全国语版| 最美情侣视频完整版高清| 结城美沙| 战狼6全片免费入口| 小豆白泽真假公主| 闺蜜情敌| 《第二十条》原型| 葛优喜剧电影全集| 《加勒比海盗1》(女版)| 北京地震最新消息1分钟前| 双女任务免费观看| 密爱 电影| 小小少女6在线观看| 应召女郎秘密日记| 暴躁老妈86集全免费观| 电视剧《仁心俱乐部》完整版 | 《完美邻居2》电影在线观看中文版 | 剑在弦上| 金瓶梅2快播| 电影瑜伽教练在线观看整板| 有盼头电视剧在线观看完整版| 黛比浪漫女家教国语版| 爸爸的种子美剧全集免费观看| 乐高大电影2| 浮之手中字1-3| 欢乐颂4免费观看全集电视剧完整版| 坎贝奇《无憾人生》在线免费观看| 八九不离十| 荣誉守则电影| 紫钗奇缘电视剧全集| 坎贝奇《品味人生》播放| 我的漂亮女房东完整版BD| 四少妇按摩记| 学生大雨中军训老师打伞围观| 丰满的继坶3中文在线观看| 光山县| 新闺蜜时代剧情介绍| 泗阳县| 穆桂英挂帅电影| 侯门深宅短剧全集| 电影去年夏天| 女法医:古代断案全集免费| 再婚进行时剧情| 谁和她睡觉了剧情| 蛋仔派对钩爪教程| 乡村老尸| 情欲网咖| 电视剧寻路| 谭咏麟演唱会2012| 好好的时光电视剧| 喜爱夜蒲 cat| 刘青云电影全集| 向往的生活第七季综艺| 《猫鼠游戏》在线观看| 文轩宋亚轩自己扩张| 地藏传奇| 浮生若梦电影| 都市激情在线| 电视剧逍遥免费观看全集| 悬崖全集| 星际迷航11百度影音| 活祭之夜| 电视剧《唐太宗李世民》| 一夜不了情| 白昼之月电视剧完整版在线观看| 香艳满屋| 我爱几何| 熊出没之夺宝熊兵电影| 《4位少妇精油按摩记》| 甜蜜家园免费观看| 白峰美羽免费在线观看| 《扫黑风暴》免费观看完整版电视剧| 千金赤子板栗1080p免费| 韩剧我的妻子| 蓝色隐形帽子电影免费| 隋唐英雄未删减版全集| 美丽屋景1卖房子| 还珠格格第一部电视剧| 伊丽莎白·坎贝奇《无憾》播放| 樱花校园2021最新版下载| 电影天海翼匿名侦探免费观看| 巴萨对曼联| 贝拉1980免费高清原声满天星美版| 高清《方子传》高清完整版在线观看| 体感预报日剧免费观看| 爱在太空| 火男刀锋| 辣妹子电视剧免费播放| 妈妈的味道韩国中字| 郝板理子电影免费观看| 摆渡人电影| 金银梅10普通话版免费观看下载| 女欢女爱第一季| 女超人满天星蓝光版| 黑暗世界| 李恩美《维修》| 兰陵王电视剧全集下载| 法国空姐5免费高清原声满天星美版百度 | 名侦探柯南黑| 《女军医》满天星免费观看| 绝世枭雄| 印度球迷撕碎C罗巨幅人像| 嫂子的情感时代电视剧介绍| 成龙历险记5| 小瘦子2全集观看| 电视剧长相思第二部| 高清宇宙面包店| 火口的两人 原版| 恐怖休息站| 日本女律师的堕落在线观看| 哈利波特2在线观看| 巜健身房的激情HD| 水饺皇后未删减| 品味人生坎贝奇免费完整版| 闪婚爱豆:顶流老公全集免费| 电影《满天星》莉娜安德森| 男子被关押1349天后无罪释放| 《唤醒》:凯登·克罗斯| 怀来至北京跨省公交停运| 房奴试爱《高潮》4| 人肉叉烧包1黄秋生| 电影《韩国财阀》免费观看2024| 哎呀爱呀| 法证先锋1 粤语| 甜馨回应压岁钱争议| 超级经纪人在线观看| 未知| 恩娇 电影| 两公的浮之手2023剧情| 白百合出轨| 爷们儿全集免费观看| 年轻母亲2| 继拇的上午HD| 壮志凌云女飞行员版本| 风云小棋王之五行杀阵| 美国黑白配在线观看免费| 我老婆的秘密完整版| 蜜桃1997| 小蜜蜂姐妹5娃娃脸| 熊出没之过年2部| 麦乐迪超人在线观看| 宿敌在线观看| 少女满天星| 太极生两仪 两仪是什么| 苍井空 厨房里的激战| 觉醒年代一共多少集| 女律师的堕落伦理电影| 哪里可以看天与地| 爱我几何在线观看免费高清| 只有妈妈好| 小水蜜桃电视剧在线观看爱丫爱丫| 人猿泰山1995版| 白雪公主与猎人百度影音| 《偿还3》完整版| 深圳街拍| 法国女超人麦乐迪版| 妖女迷行第一季| 红楼残梦电影完整版免费观看| 《水润女人》| 东莞dj| 青梅竹马是消防员无删1| 双j恋吧| 一生一世电视剧免费观看西瓜影音| 欧式少女1集全观看视频| 埃及艳后h| 后营露营无增减第二季预告| abo成结动画模拟观看| 伴侣交换| 精英部队| 公交车艳妇系列1一40| 黑白配免费观看高清播放| 巴山夜雨的意思| 电视剧井冈山36集播放免费完整版| 打工仔的梦想房sp| 爱情电影完整版朴诗妍| 开放的家庭| 掌中之物西班牙版免费观看| 聊斋艳谭3| 打雀英雄传| 林由奈jufd467在线播放| 女神天国| 风之舞 电视剧| 请别相信她免费观看完整版电影| 泽塔奥特曼第16集| 办公室有鬼| 走天涯dj| 1995版人猿泰山hr版本百度网盘| 白银帝国剧情| 天龙八部免费观看在线完整版| 荣誉法则满天星版在线| 咱俩结婚吧电视剧| 《未婚妻的姐姐》电视剧在| 碟血弧岛| 足球女老板满天星版安娜| 中国电影免费高清观看| 私人航空电影在线观看| 平凡的世界| 佳同译图| 张涵予天星术免费播放| 法国灭火宝贝1-4集| 江苏卫视花样年华全集| 辽阳县| 鹫尾芽衣《秘密搜查官》| 房间里的二人世界原声中文版| 农场主的三个女儿们免费观看全集| 韩剧《老板的贴身秘书》免费观看| 班主任的两个大山峰该用| 陆贞传奇电视剧在线观看免费全集| 《奇怪的夜晚》| 电影隐形帽子在线观看| 暴躁老妹csgo免费观看| 韩国电影医生高清完整版在线观看 | 百灵潭电视剧| 黄手帕第2部| 步步高手语版| jizz分类| 圣女的代价百度影音| 比悲伤更悲伤的故事| 足球宝贝2(法国)免费版观看完整版| 电视剧独狼在线观看| 大鱼海棠| 杨坤无所谓| 双人按摩| 对风说爱你| 漂亮的女邻居2做爰| 暴躁老妈免费观看电视剧 | 恶魔的牢笼电影| 房奴试爱激情戏做爱| 德克里克堡| 法国空姐3完整免费高清原声满天星原名 | 法国空姐4免费高清原声我奔跑| 骑士电影| 金瓶梅 高清完整版下载| 娃娃脸5在线观看完整免费高清原声满| 仙武传在线免费观看| 密桃成熟2| 命中婚劫未删减| 仙女屋电影免费观看| 耀眼的你啊电视剧免费观看| 完美的他电视剧| 像小强一样活着电影| 暴走微电影| 十二罗汉迅雷下载| 战狼6国语免费看| 武训传免费| 美女贴身保镖短剧免费观看全集| 宠妃凰图电视剧| 第八号当铺电视剧| 美国禁忌电影免费观看满天星| 路一直都在mv| 《超级保镖》全集观看| 战狼6免费观看三人剧情| 翡翠波斯猫2| 隋唐英雄 全集| 爱唯侦察2025合集免费下载| 一路上有你第一季| ZLJZLJZLJ日本妈妈| 韩国理伦片驯服小峓2-手机看片免费在线观看-亚洲AV在线观看 | 法国空姐3免费高清原声满天星奔跑 | 荷尔蒙3全集免费播放| 再喊一声爹娘| 隐形的帽子在线观看免费完整版| 兰陵王电视剧结局| 三代响马| 壮志凌云女版满天星法版免费观看| 天降之物h| 向涟仓士献上纯洁| 战狼6免费观看高清下载| 乡村欲妇肥臀| 西瓜烂了是什么梗| 瓜达卢佩的玫瑰| 高清探子阿坚:无头奇案| 恶魔的艺术2邪降| xl司令动漫第一季| 欲奴第一季| 那年花开全集免费观看星辰| 女生拒买47元水果捞被骂小三| 夏家三千金全集下载| 恋梦空间第二季| 爸爸的种子免费观看电视剧需要VIP吗 | 夫妻成长日记在线| 法国空4| 好想好想谈恋爱电视剧| 《保险的女销售》| 都市妖孽战神林齐 小说| 进口媳妇在线观看免费西瓜| 朴诗妍《爱的释放》电视剧在线观看| 奔跑吧3| 离婚惊艳:全城羡慕短剧全集| 新员工入职秘书2| 撒旦的情与欲下载| 花宫亚美| 广东省| 使徒行者4| 人民的名义未删减版有多少集| 女律师的陨落免费观看完整版| 蓝志什么脱口秀| 爱了散了全集| 裸婚电视剧| 泰囧电影下载| 《她被搬运工侵犯》2| 谁是凶手免费观看完整版| 白衣校花与大长腿免费观看电视剧| 男女一起愁愁愁免费观看电视剧| 金瓶梅下| 你微笑时很美免费全集| 新房里干了女销售电影| 广场舞我愿| 不止喜欢你电视剧免费观看| 日本满天星电影全集免费观看| 撞邪先生| 青春四十电视剧免费观看| 需要爸爸播撒种子电影播放| 直播:女子10米跳台决赛| 海绵宝宝第12季| 新方世玉电影| 日批发出来的声音录音| 爱我几何电影在线观看免费版高清全 | 一女大战七个黑人到喷浆| 碟中谍5在线观看高清完整版| 华氏247| 四个夫妇去按摩的电影| 乌云之上电视剧免费| 姐姐韩国电影免费观看2019| 想要成为影之实力者第三季地球篇| 花街狂奔电影| 女超人满天星版麦乐迪完整版| 蜜桃成时33d国语| 人生如戏全集大结局| 圣特罗佩1982| 一年一度喜剧大赛2综艺| 卖房子的女销售| 指环王3:王者无敌| 金钱之味剧情| 法国空乘5满天星观看| 被称为世界粮食之母的是| WRITEAS电动玩具| 朴亚珍电影HD | 坎贝奇《无憾》免费完整观看| 监狱学园动漫全集观看| 大秦帝国在线| 麦子交换1的中文翻译曼哪 | 欲百度影音| 成人片《男按摩师乳房按摩》在线观 | 我是刑警全部演员表| 誓言今生 下载| 女超人麦乐迪版无删减在线观看| 我们的秘密| 强心脏yg| 部长出差的日子在线看| 幸福小丈夫全集| 最美丽的第七天| 魔兽在线观看| 还珠格格第三部全集免费观看| 《美丽屋景1卖房子》| 大夏傻神短剧1-100集完整版| 桃花运电视剧| 贪吃的猫女| 贪婪电影| 卿卿日常在线观看电视剧| 何百芮的地狱恋曲| 姐妹牙医 在线| 朋友的妈妈3中语观看3| 暴劫倾情精彩片段| 嫂子嫂子| 当涂县| 天地无伦在线观看视频| 普京为何此时在盟国领土部署核武| 净最新影片在线看| 小仓尤子| 《3对1:两个人一次性体检》免费观看 | 二阶堂富美电影在线观看| 万能阿曼动画片全集| 私人助理2法国版电影免费看| 相思误在线观看完整版免费| 火影忍者国语版| 庆余年第二季全集免费观看| 杨敏思版1-5集免费播放电视剧| 纵有疾风起免费观看全集| 三年国语版高清在线观看| 婶婶免费观看| 男乒乓球团体赛决赛直播| 了不起的女孩在线观看| 黔乡牧人| 美貌的社长夫人| 米老鼠与唐老鸭全集| 红粉世家电视剧全集免费播放高清| 生殖按摩伦理剧情电影在线观看| 吞噬星空动漫在线观看39集| 徐悲鸿电视剧全集免费| 陪部长出差电影免费观看| 爱情真善美17| 大运会运动员踏着蜀锦入场| 本能2百度影音| 魔力宝贝监狱未减版| 杉杉来了电视剧全集免费| 蜜桃成熟时三人同眠| 第四片甲骨电视剧全集在线观看| 支配的教坛第一季第五集在线观看 | 电影《美味快递员》演员阵容| 与部长一起出去差旅日本| 精灵梦叶罗丽2| 女人是男人的未来免费观看| 僵死电影| 《护士长》水果派解说| 钻石王牌 第四季| 在厨房开车| 不识泰山| 观看免费完整版高清电影| 执法女先锋满天星版3| 绝命幽灵船电影未删减版在线观看| 雾都魅影电视剧| 饺子电影| 入室暴行2免费观看完整版| 《花子小姐vs倔强驱魔师》在线观看| 英雄本色3电影完整版免费观看 | 26种死法百度影音| 陕西秦腔全本戏| 爱盛开电视剧| 色九月h| 熊熊帮帮团| 《花与蛇3》| 梅西疑似脚踝隆起大包| 战狼6高清完整免费观看国语| 动漫家属1-6集免费观看| 小欢喜电视剧1-50集免费观看| 泰剧临时天堂| 少女艾莎完整版| 八戒八戒8| 《伊波拉病毒第二部在线播放| 犯罪高手| 先结婚后恋爱电视剧| 三十而立电视剧全集| 高压监狱2免费观看完整版| 伍六七第5季全集免费观看 | 站着再来一次第6集全集观看 | 温柔女教师在线观看电视剧大全| 老舅1-27集免费看| 冰糖炖雪梨完整版| 激情交叉点| 欧式少女16集全在线观看优酷下载| 湘西往事| 熟妇的滚烫的肉唇翻进翻出| 九九电视剧免费观看| 如沐爱河| 周弘| 老版敌营十八年| 一出好戏免费观看高清| 你微笑时很美31集免费观看| 青龙| 畀女一起愁愁在线观看免费播放| 许我耀眼电视剧更新到几集了| 邻家特工 下载| 我是会长| 《义子侵犯》完整版| 哇嘎在线观看视频| 李卫当官第二部| 一年一度喜剧大赛2综艺| 电影无赦之仇免费观看| 插曲的痛30集全播放免费下载| 界限1985满天星免费观看| 电视剧利剑行动| 热舞情天| 美人心计35| 360大佬爱上我第三季在线观看 | 死亡之雪2| 一路向西女演员| 金银梅5一10普通话免费观看| 都市小神医短剧全集| 东方红的简谱| 阿里巴巴与四十大盗| 漂亮的保姆6在线观看| 与君同寝| 杜琪峰复仇| 波拉特下载| 电影双女任务在线观看| 金玫瑰洞| 今生有你电视剧西瓜免费观看 | 趟过女人河的男人全集| 《渔夫荒淫史》-高清电影| 链-两个女人的诱惑 电影| 好姑娘3中文在线观看| 我的亲爱的瘦子8| 斗罗大陆116集| 初恋女帝| 僵尸世界大战高清| 高压女监狱2在线观看完整免费高清原| 纵欲丰满的杨贵妃完整版| 中华小子第二部全集| 万载县| 死神来了6完整版高清免费看| 噼里啪啦国语版在线观看| 杜拉拉之似水年华下载| 加勒比海盗女海盗1在线看免费完整版 | 年轻的母亲节4| 伯虎为卿狂国语| 破冰行动电视剧48集免费播放| 新宿事件国语高清| 战狼六| 虎胆雄心片尾曲| 神医小娇妻:总裁别碰我全集免费| 神秘感染电影| 浪漫俱乐部| 医院的特殊待遇2角色介绍| 老杨解说| 逆天邪神在线观看全集免费播放| 韩国电影免费观看高清完整版在线| 案发现场3| 《千金与佣人》| 法国空姐八部曲系列| 农业部长| 花木兰2动画片国语| 医生输千万后杀妻抛尸?警方回应| 三宫椿主演的电影最高的爱人| 寿星新人类,肥尸哥主演| 电影永不退缩| 缘之空动画| 最后一班地铁电影| 女超人法国无删减版麦乐迪| 沙鹰行动| 灿烂的花园综艺免费观看高清| 猎情武阎| 偃师市| 《麦乐迪女超人》正版在线观看| 九尾狐姐姐传电视剧| 我是刑警免费高清播放在线观看| 疯狂动物城英语版免费| 花季在线免费观看| 金银瓶2008版徐少强| 呼吸过度电影| 我弟弟的女朋友 电影| 迷失东京| 少年派第二季电视剧免费观看全集| 浪漫女家教免费完整电视剧在线观看| 帅哥按摩师电影在线观看| 炽道在线观看全集免费观看高清| 电影《现在不行》完整观看免费 | 法国空姐1免费高清原声我奔跑| 漂亮的妈妈中字开头10个字| 新还珠格格电视剧| 全面追缉令| 高清昨天| 功夫教练| 巨茎插入李淑芬体内视频| 五号特工组第三部免费观看完整版| 巴巴爸爸中文版| 电影金光大道| 九州缥缈录电视剧免费观看| 黑白配国语版免费播放| 麦乐迪女超人》| 大灌篮高清下载| 斗罗大陆177| 武庚纪 动漫| 丛林血战完整版免费观看| 美容室待遇5HD| 恋焰风暴泰剧普通话版在线观看| 一言为定的挑战| 新济公活佛下部| 胜女的代价3| 农场主三姐妹2保罗| 暴躁46集免费播放下载安装| 原来如此电影| 郝蕾《颐和》片段高清| 哎呀我愿意全集| 幸福泌尿科在线播放| 漂亮妈妈中字开头7个字| 最新泰剧大全| 忍者神龟87版| 吴毅将所有电影| ボクの弥生さん| 酋长的女儿2满天星版叫什么| 妻子6免费完整高清电视| 办公室秘书电影| 蓬莱市| 卢旺达的玫瑰满天星| 校园诡异事件在线观看| 《蛟龙行动》在线观看高清电影| 法国空姐5在线看免费高清满天星全集 | 我的老板娘3韩国| 《高压监狱》在线观看| 《82板杨敏思版本1-5电视剧免费观》| 疯狂二人房间荷尔蒙爆发原声| 魔帝归来:三界独尊全集免费| 圣域传说| 乙酰半胱氨酸泡腾片| 私密按摩师免费完整版| 意大利电影八尺夫人在线观看 | 一千滴眼泪吻戏| 爱情真善美全集80| 《手遮天》| 妻子8免费全集高清观看在线| 巨茎挺进李淑芬的体 | 我的女友妈妈韩字的ID是谁| 高清《欧布奥特曼》在线观看| 美国队长3下载| 妈妈屈身儿子同学,为救儿子,嫁给同学 | 两个人日本高清| 中国风水 算命| 虎鹤妖师录动漫免费观看| 妈妈爱上儿子的同学韩国电影 | 奇妙的美发沙龙| 三生三世三十里桃花| 正在播放:【传媒】MDSR0006-2 《小凤新婚》下集-高冷新妻性奴 - 17 | 灭世电视剧| tobu4美国| 桃色凶器免费看| 不见不散 电影| 占有姜西| 未来影院手机版在线播放版| 有顶天家族| 义姐是不是良妈妈动漫第集在线看全| 韩国关于美容店的电影有哪些| 高清《家政服务》免费观看| 摔跤在线| 香蕉视屏免费播放| 财神有道电视剧| 义姐是不是良女第二集观看| jojo黄金之风在线看完整版免费| 贞淑的推销2024韩剧| 唐诡事录之西行| 想想办法吧爸爸在线观看| 黑白配高清国语完整版| 十四岁姑娘免费观看电视剧剧情| 南洋第一邪降| 忽悠女老板| 丁建华朗诵| 双子星公主 第2部| 广州市| 国风按摩系列| 杨思敏国语版最经典的一句| 刃牙皮可篇在线观看| 闵度允韩剧中文在线观看| 黄百韬简介及最后结局| 舔B拨弄深入抽插上司| 女员工的5付出中字| 结局万万没想到全集观看| 魔唇劫国语| 加藤绫佳| 一屋老友记 国语| 漂亮的保姆3在线播放西瓜| 田渊正浩在《社长和秘书》演谁 | 盲井 高清完整版| 药王神篇| 钻石王老五的艰难爱情全集| 私人助理2法国版免费观看| 伯爵夫人2满天星| 带娃虐渣超厉害:神级奶爸全集免费| 隐秘的角落电视剧在线播放 | 神奇眼镜| 斗罗大陆140| 浪子燕青电视剧| 当我遇上你无处可逃| 妻子的谎言电视剧全集| 当我飞奔向你完整版免费| 激战丛林之人袁泰山免费| 美国电影荣誉守则满天星| 早恋电影| 芭比之时尚奇迹中文| 都市煞星| 老版肉蒲团| 美国式的家庭忌讳4大结局| 今夜无人入眠免费观看| 少主且慢行电视剧| 小宁电影网| 《蜜桃成熟时》| 《我的漂亮老师2| 脱裤子打板子| SSIS-338《最高の爱人沼》在哪看 | 《合租房的激情》在线观看| 丈姆娘来了全集| 公主她不装了:摊牌是大佬短剧全集| 3对1:2人一次性体检4| 韩国美容店的待遇5HD电影| 映山红简谱| 蜘蛛侠2| 玉米电影| 豆腐西施杨七巧| 金银悔6-10集普通话版| 丈夫的朋友仓多真央| 花儿与少年6免费观看| 善良的岳母日本| 亲爱的孩子们电视剧免费观看| 三姐妹电影| 我的好妈妈8高清中字在线观看| 电影《北越暴行》免费播放| 美国版《健美》在线观看| 约会大作战第一季| 火凤凰女子特种兵| 使徒行者1在线完整版免费观看| 无尽的尽头电视剧分集剧情 | 高清《星汉灿烂》全集免费看| 流氓状元| 唐人街探案3在线| 让我的指尖扰乱你的心弦| 妖精的尾巴第二季| 正义的重量电视剧| 盲井 完整版| 罗丽星克莱尔电影全集| 小孩身上有白斑图片| 深泽县| 原千岁葬礼之哀悼在线播放| 《繁花》免费播放在线观看全集 | 史前战纪第一季在线观看完整版| 黑白配在线播放免费观看| 需要爸爸播种子 第1集 在线观看-樱花动漫2| 师傅全集| 中华大丈夫高清| 完美世界免费观看全集| 少年包青天3之天芒传奇免费观看| 麦乐迪melody与父亲在线观看| 打扑克视频免费观看| 顿悟的意思| 宝贝计划国语| 道道道在线国语高清| 欲女聊斋| 美丽妻子替丈夫还债| 情定三世缘| 神澜奇域无双珠动漫在线观看| 烈火男儿之队长的故事| 特殊外卖员在线观看| 大湾仔的夜免费观看|