亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 網(wǎng)管 > 服務(wù)器 > 正文

實(shí)現(xiàn)web服務(wù)器中的gzip

2020-05-27 13:46:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

 web服務(wù)器實(shí)現(xiàn)壓縮數(shù)據(jù)發(fā)送給瀏覽器

web服務(wù)器使用gzip壓縮可以提高網(wǎng)站的響應(yīng)速度,因?yàn)閿?shù)據(jù)壓縮會(huì)消耗一定的cpu及I/O的。但是可以減少通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量。

從而提高網(wǎng)站的瀏覽速度本程序本人自己在ubuntu中編譯成功,在ubuntu中經(jīng)過(guò)Firefox中,window 系統(tǒng)IE 8,F(xiàn)irefox、chrome中測(cè)試成功。

本程序需要用到zlib壓縮類庫(kù),沒(méi)有裝將無(wú)法成功,本人只提供在ubuntu中的代碼及運(yùn)行方式。希望大家諒解。關(guān)于用到的

zlib庫(kù)中的知識(shí),稍后會(huì)出新的博客做解釋,關(guān)于gzip壓縮的頭部請(qǐng)看另外一篇博客 gzip頭部格式。

源碼及makefile下載地址:http://pan.baidu.com/share/link?shareid=167795&uk=2181414688

直接給大家上源代碼。下面為源代碼。(如有任何問(wèn)題,希望大家指出來(lái)了)

/* *主要實(shí)現(xiàn)功能,對(duì)傳輸?shù)臄?shù)據(jù)使用gzip進(jìn)行壓縮了*1.實(shí)現(xiàn)綁定本機(jī)機(jī)器的1024端口作為ReageWeb服務(wù)提供網(wǎng)頁(yè)服務(wù)的端口。(避免與機(jī)器上裝有web服務(wù)器產(chǎn)生端口沖突)* 作者:Reage* blog:http://blog.csdn.net/rentiansheng*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/un.h>#include <netinet/in.h>#include <arpa/inet.h>#include <fcntl.h>#include <string.h>#include <sys/stat.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <assert.h>#include <zlib.h>#define OS_CODE 0x03 /*Unix OS_CODE*/#define DEFAULT_COMPRESSION Z_DEFAULT_COMPRESSION#define DEFAULT_WINDOWSIZE -15#define DEFAULT_MEMLEVEL 9#define DEFAULT_BUFFERSIZE 8096#define MAX 1024#define METHOD 20 //獲取數(shù)據(jù)的方式,使用字符串的長(zhǎng)度#define URI 255 //表示URI的最大長(zhǎng)度#define VERSION 15 //HTTP版本好的最大長(zhǎng)度#define TYPE 20 //表示文件的類型的長(zhǎng)度int res_socket;void app_exit();static const char gzip_header[10] = {37, 213, Z_DEFLATED, 0, 0, 0, 0, 0, 0, OS_CODE};void put_long (unsigned char *string, unsigned long x) { string[0] = (x & 0xff); string[1] = ((x >> 8) & 0xff) ; string[2] = ((x >> 16) & 0xff) ; string[3] = ((x >> 24) & 0xff);}/*@description:將數(shù)據(jù)使用gzip壓縮后發(fā)給瀏覽器@parametersockd:套接字file: 要壓縮的內(nèi)容了*/int gzip_buffer (int sockd, char * msg, int len) { z_stream stream;//zlib使用的。 int ret, flush; char in[MAX];//存放輸入的數(shù)據(jù) char send[MAX + 18 ];//存放壓縮過(guò)后的數(shù)據(jù) unsigned have; memcpy (send, gzip_header, 10); memset (in, 0, len); stream.zalloc = Z_NULL; stream.zfree = Z_NULL; stream.opaque = Z_NULL; stream.avail_in = 0; stream.next_in = Z_NULL; memcpy (in, msg, len); //壓縮初始化。 int tmp_result = deflateInit2(&stream, Z_DEFAULT_COMPRESSION,//壓縮級(jí)別 Z_DEFLATED,//壓縮方式 -MAX_WBITS, 8, Z_DEFAULT_STRATEGY); if (Z_OK != tmp_result) { printf("deflateInit error: %drn", tmp_result); return 0; } stream.avail_in = len; //要壓縮數(shù)據(jù)的長(zhǎng)度 stream.next_in = in; //要壓縮數(shù)據(jù)的首地址 stream.avail_out = MAX; //可存放的最大輸出結(jié)果的長(zhǎng)多。就是壓縮后數(shù)據(jù)的最大長(zhǎng)度 stream.next_out = send + 10; //存放壓縮數(shù)據(jù)的開(kāi)始位置,send前十個(gè)字節(jié)用來(lái)放頭部 ret = deflate (&stream,Z_FINISH); //壓縮 assert (ret != Z_STREAM_ERROR); switch (ret) { case Z_NEED_DICT: ret = Z_DATA_ERROR; case Z_DATA_ERROR: case Z_MEM_ERROR: (void)inflateEnd (&stream); return ret; } have = MAX - stream.avail_out; unsigned crc = crc32(0L, in, len); char * tail = send + 10 + have; put_long (tail, crc); put_long (tail + 4, len); write (sockd, send, have + 18); deflateEnd (&stream); return 1;}/* @description:開(kāi)始服務(wù)端監(jiān)聽(tīng)@parameterip:web服務(wù)器的地址port:web服務(wù)器的端口@result:成功返回創(chuàng)建socket套接字標(biāo)識(shí),錯(cuò)誤返回-1*/int socket_listen( char *ip, unsigned short int port){ int res_socket; //返回值 int res, on; struct sockaddr_in address; struct in_addr in_ip; res = res_socket = socket(AF_INET, SOCK_STREAM, 0); setsockopt(res_socket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)); memset(&address, 0, sizeof(address)); address.sin_family = AF_INET ; address.sin_port =htons(port); address.sin_addr.s_addr = htonl(INADDR_ANY); //inet_addr("127.0.0.1"); res = bind( res_socket, (struct sockaddr *) &address, sizeof( address ) ); if(res) { printf( "port is used , not to repeat bindn" ); exit(101); }; res = listen(res_socket,5); if(res) { printf( "listen port is error ;n" ); exit( 102 ); }; return res_socket ;}/*@description:向客戶端發(fā)送網(wǎng)頁(yè)頭文件的信息@parameterconn_socket:套接字描述符。status:http協(xié)議的返回狀態(tài)碼。@s_status:http協(xié)議的狀態(tài)碼的含義@filetype:向客戶端發(fā)送的文件類型*/void send_http_head(int conn_socket){ char buf[MAX]; memset(buf, 0, MAX); sprintf(buf, "HTTP/1.0 %d OKrn", 200); sprintf(buf, "%sServer: Reage Web Serverrn", buf); sprintf(buf, "%sContent-Type: text/htmlrn", buf); sprintf(buf, "%sContent-Encoding: gziprnrn", buf); write(conn_socket, buf, strlen(buf));} int main(int argc, char * argv[] ){ int conn_socket; int tmp ; int line ; struct sockaddr_in client_addr; char buf[MAX]; int len = sizeof(client_addr); char method[METHOD], uri[MAX], version[VERSION], type[TYPE]; char msg[] = "<br><br><h1>Reage Web Server gzip support text!</h1><br/><h1><a href = "http://blog.csdn.net/rentiansheng">Reage blog</a>"; res_socket = socket_listen( "127.0.0.1", 1024) ; //當(dāng)按ctrl+c結(jié)束程序時(shí)調(diào)用,使用app_exit函數(shù)處理退出過(guò)程 signal(SIGINT, app_exit); while(1){ conn_socket = accept( res_socket, (struct sockaddr * )&client_addr, &len ); printf("reagen"); tmp = read (conn_socket, buf, MAX-1); buf [MAX - 1] = 0; send_http_head(conn_socket); gzip_buffer (conn_socket, msg, strlen(msg)); close(conn_socket); } }void app_exit(){ //回復(fù)ctrl+c組合鍵的默認(rèn)行為 signal (SIGINT, SIG_DFL); //關(guān)閉服務(wù)端鏈接、釋放服務(wù)端ip和端口 close(res_socket); printf("n"); exit(0);}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
免费欧美日韩国产三级电影| 99国产精品久久久久| 伊人久久大香线蕉av一区二区| 成人综合在线网站| 性感美女视频一二三| 4444kk亚洲人成电影在线| 91成人福利社区| 日韩av一区二区三区| 亚洲黄色有码视频| 色哟哟日韩精品| 久久这里只有精品99| 国产精品福利视频一区二区三区| 午夜在线免费视频| 国产成人夜间影院在线观看| xxxxxx国产| 欧美一级艳片视频免费观看| 国产精品人成在线观看免费| 国产麻豆一区二区三区精品| 亚洲午夜精品一区二区| 大奶一区二区三区| 久久老女人爱爱| 欧亚在线中文字幕免费| 欧美日韩亚洲一二三| 亚洲人吸女人奶水| 韩国三级hd中文字幕有哪些| 99久久精品免费观看国产| 黄页网站在线免费观看| 国产精品久久久亚洲| 亚洲成年人影院在线| 国产精品一区二区电影| 亚洲精品在线免费播放| 亚洲中文字幕无码不卡电影| 五月天婷婷色综合| 538在线观看| 国产丝袜一区二区| 成人自拍视频在线观看| 美女精品久久久| 天堂资源在线| 一区二区三区在线观看国产| 一区二区三区| 日本中文字幕在线免费观看| 日本特级黄色大片| 特黄特黄一级片| 中文字幕一区二区人妻电影丶| 亚洲自拍第二页| 欧美男同视频网| 97视频免费在线| 午夜在线激情影院| 欧美不卡视频一区发布| 亚洲国产成人一区| 国产女主播喷水视频在线观看| 欧美色另类天堂2015| 国产精品无码无卡无需播放器| 欧美日韩另类国产亚洲欧美一级| 中文日产幕无线码一区二区| 欧美大片免费观看在线观看网站推荐| 四虎亚洲成人| 亚洲一区二区三区视频| 欧美大成色www永久网站婷| av免费不卡| 日韩黄色免费观看| 国产美女视频一区二区| 91久久精品国产91久久| 在线精品国产亚洲| 精品日韩美女| 最新国产热播激情视频| 欧美国产视频一区二区| 日本一区网站| 极品尤物久久久av免费看| 4444欧美成人kkkk| 免费成人在线看| 亚欧在线免费观看| 久久97人妻无码一区二区三区| 欧美激情综合在线| www.亚洲黄色| 亚洲视频在线看| 国内精品模特av私拍在线观看| 99免费精品在线| 亚洲国产欧美一区二区三区丁香婷| 久久免费播放视频| 日日骚一区二区网站| 欧美一区二区三区日韩| 午夜性色一区二区三区免费视频| 亚洲午夜一二三区视频| 国产欧美日韩亚洲精品| 91色婷婷久久久久合中文| 久久久福利影院| 日本黄色大片在线观看| 91成人在线视频观看| 国产成人免费视频app| 国产一区二区三区网站| 久久精品视频5| 韩国三级hd中文字幕有哪些| 国产视频www| 日韩精品专区| 99视频在线观看视频| 久久久精品欧美丰满| xfplay资源站夜色先锋| 日韩视频亚洲视频| 国产精品久线观看视频| 在线精品自拍| 国产午夜精品一区理论片飘花| 中文字幕一区二区三区人妻四季| 日韩精品不卡一区二区| 小泽玛利亚av在线| 成人久久网站| 香蕉在线观看视频| 三级黄色片网站| 99re8这里有精品热视频免费| 91精品中文字幕一区二区三区| 久久久久亚洲av无码专区喷水| 日韩视频久久| 欧美视频在线一区| 中文字幕一二三区在线观看| 57pao国产精品一区| 激情另类综合| 青娱乐极品盛宴一区二区| 伊人久久高清| 久久九九亚洲综合| 日韩国产欧美在线观看| yy6080午夜| xxxxx欧美| 日本在线播放一区二区| 在线丨暗呦小u女国产精品| 亚洲精品中文字幕乱码三区不卡| 91精品视频专区| 久久老司机精品视频| 亚洲一二三在线| 日韩av资源在线| 精品久久久久久久久久久久久久| 日韩精品一区二区三区国语自制| 国产极品嫩模在线观看91精品| 精品久久久久香蕉网| 国产孕妇孕交大片孕| 国模雨婷捆绑高清在线| 国产va免费精品观看精品视频| 狠狠人妻久久久久久| 日本一二区视频| 草莓视频性福宝| 国产精品色婷婷| 天堂√在线中文官网在线| 成人午夜剧场免费观看完整版| 国产精品免费aⅴ片在线观看| 99久久免费国| 精品国产亚洲在线| av电影免费在线观看| 91久久国产综合久久| 亚洲精品久久久久avwww潮水| 亚洲视频1区2区| 中文字幕一区二区三区色视频| 91专区视频| 91成品人影院| 成人自拍av| 91青青国产在线观看精品| 黄网在线观看视频| 欧美人xxxxx| 久久久久久久久久伊人| 国产三级电影在线播放| 青青草原综合久久大伊人精品优势| 国产寡妇色xxⅹ交肉视频| 日韩精品一区中文字幕| 国内精品久久久久久影视8| 中文字幕不卡在线| 亚洲欧美综合自拍| 无罩大乳的熟妇正在播放| 国产精品久久久久久久久久久新郎| 国产成人精品视频在线观看| 一区二区三区不卡在线观看| 日本视频www| 日本熟妇人妻中出| 男操女视频网站| 免费黄色在线| 中文字幕亚洲综合| 国产自偷自偷免费一区| 国产精品自拍网站| 色视频成人在线观看免| 欧美日韩性视频在线| 99久久久无码国产精品免费蜜柚| 欧美日韩另类在线| 久久久久久久久99精品大| 日产欧产va高清| 国产精品亚洲激情| 午夜小视频免费| 玖玖爱这里只有精品| 久久精品在线视频| 亚洲精品亚洲人成人网在线播放| 国产精品久久久久77777| 污污片在线免费视频| 成人无遮挡免费网站视频在线观看| 人妻体体内射精一区二区| 精品国产乱码久久久久久丨区2区| 一区二区三区精品视频在线观看| 日本一区二区高清| 久久久久久久久久久久久久| 日本理论中文字幕| 999www成人| 精品久久中文字幕久久av| 丁香花在线影院| 色综合天天综合网天天狠天天| 91欧美一区二区| 欧美最猛性xxxxx直播| 亚洲午夜激情影院| 中文字幕av一区中文字幕天堂| 操欧美女人视频| 最近2019中文字幕在线高清| 亚洲天堂av一区| 欧美专区视频| 日韩精品视频免费专区在线播放| 精品一区二区三| 电影天堂av在线| 超薄肉色丝袜一二三| 最新亚洲国产| 国产无套内射久久久国产| 黄色羞羞视频在线观看| 欧美军同video69视频| 亚洲丝袜精品| 99久久亚洲精品蜜臀| 中文字幕一区二区三| 亚洲欧美日本一区二区| 欧美男同视频网| 久久久久久久久岛国免费| 老牛精品亚洲成av人片| 在线观看av黄网站永久| 国产一级精品在线| 老司机精品视频一区二区三区| 国产一区二区亚洲| 日韩欧美中文字幕一区| 亚洲女同一区| 亚洲福利视频网| 精品少妇一区二区30p| 亚洲成年人电影| 亚洲色图16p| 亚洲一级片在线观看| 中文字幕亚洲精品在线观看| 中文字幕22页| 亚洲电影在线一区二区三区| aaa大片在线观看| www成人免费观看网站| 日本高清视频网站| 麻豆视频久久| 91在线视频播放地址| 亚洲伊人伊色伊影伊综合网| 最新日韩三级| 男人天堂2024| 日韩一区二区三区视频在线观看| 欧美成人精品欧美一| 国产精品一区二区三区四区| 亚洲欧洲免费无码| 懂色av一区二区三区免费观看| 精品国产三级电影在线观看| 日韩欧美123区| 高清精品久久| 国内精品卡一卡二卡三新区| 97精品久久久久中文字幕| 性欧美xxxx大乳国产app| 免费观看h电影在线观看| 污版网站在线观看| 91在线观看免费高清完整版在线观看| 免费成人高清视频| 色一区二区三区四区| 美女视频黄免费的亚洲男人天堂| 日韩亚洲欧美一区二区| 久久久久国产精品嫩草影院| 午夜精品久久久久久久久久久久| 国产美女玉足交| 亚洲超碰在线观看| 黄色免费网站在线| 亚洲爱爱爱爱爱| 两女双腿交缠激烈磨豆腐| 极品尤物av久久免费看| 精品日韩一区二区三区免费视频| 国产一区欧美二区三区| 在线影视一区| 欧美国产不卡| 国产精品男女猛烈高潮激情| japonensisjava老师可播放| 狠狠色狠狠色综合日日五| 狠狠插狠狠操| 在线免费av网| 里番在线观看网站| 在线观看免费高清视频| 综合五月婷婷| 国产5g影院天天爽天天看| av不卡免费电影| 理论片鲁丝二区爱情网| 亚洲欧美国产一区二区| 我要看一级黄色大片| 99久久精品国产毛片| 日韩亚洲欧美中文在线| 神马午夜伦理不卡| 91嫩草亚洲精品| 亚洲天堂视频网| 狠狠干天天干| 黄色成人一级片| h在线观看网站| 人妻va精品va欧美va| 国产精品视频免费观看| 亚洲一区日韩精品| 熟女俱乐部一区二区| 亚洲xxx自由成熟| 精品久久久久久久久久久久久久久久久久| 久久久久久九九| 欧美猛男超大videosgay| 欧美 丝袜 自拍 制服 另类| 亚洲视频一区二区在线| 青青青在线视频免费观看| 91精品久久久久久9s密挑| 午夜福利视频一区二区| 十八禁一区二区三区| 777午夜精品福利在线观看| 精品国产一区二区在线观看| 在线一区二区三区| 国产黄色一区二区三区| 国产精品69精品一区二区三区| 秋霞久久久久久一区二区| 日韩福利一区二区| 欧美一区日本一区韩国一区| 久久综合伊人77777麻豆| 蜜桃传媒视频麻豆一区| 日韩网站在线| 动漫一区二区| 欧美视频免费看| 久久精品嫩草影院| 亚洲美女自拍视频| 日韩精品视频免费专区在线播放| 成人av影音| 香蕉视频成人在线| 日韩欧美国产一二三区|