456成人影院在线观看_亚洲a毛片_日韩9999_伊人网老司机_一本免费视频_最近高清日本免费

IT之道-艾銻知道

您當前位置: 主頁 > IT服務 > 網絡服務 >

基于Linux的多線程Web服務器端


2015-11-09 09:00 作者:admin 瀏覽量:

  Web服務端是用的多線程并發方式,而沒有使用IOCP或epoll模型,因為客服端和服務端交換1次數據后就立即斷開連接,沒有足夠時間發揮IPCP或epoll的優勢。(IT外包服務

  在服務端和客服端保持較長連接的前提下頻繁發送大小不一的消息時(最典型的就是網游服務器),才能真正發揮出這2種模型的優勢。

  // // main.cpp // hello_server // // Created by app05 on 15-10-27. // Copyright (c) 2015年 app05. All rights reserved. // #include #include #include #include #include #include #include #define BUF_SIZE 1024 #define SMALL_BUF 100 void * request_handler(void * arg); //線程入口函數 void send_data(FILE *fp, char * ct, char * file_name); //向瀏覽器客服端發送數據 char * content_type(char *file); //數據類型 void send_error(FILE *fp); //發送錯誤處理數據 void error_handling(char *message); //控制臺錯誤打印 int main(int argc, char *argv[]) { int serv_sock, clnt_sock; struct sockaddr_in serv_adr, clnt_adr; socklen_t clnt_adr_sz; char buf[BUF_SIZE]; pthread_t t_id; if (argc != 2) { printf("Usage : %s \n", argv[0]); exit(1); } serv_sock = socket(PF_INET, SOCK_STREAM, 0); memset(&serv_adr, 0, sizeof(serv_adr)); serv_adr.sin_family = AF_INET; serv_adr.sin_addr.s_addr = htonl(INADDR_ANY); serv_adr.sin_port = htons(atoi(argv[1])); if(bind(serv_sock, (struct sockaddr *) &serv_adr, sizeof(serv_adr)) == -1) error_handling("bind() error"); if(listen(serv_sock, 5) == -1) error_handling("listen() error"); while (1) { clnt_adr_sz = sizeof(clnt_adr); clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_adr, &clnt_adr_sz); printf("Connection Request: %s : %d\n", inet_ntoa(clnt_adr.sin_addr), ntohs(clnt_adr.sin_port));//連接的客服端IP與端口 //多線程 pthread_create(&t_id, NULL, request_handler, (void*) &clnt_sock); pthread_detach(t_id); } close(serv_sock); return 0; } //客服端請求消息處理 void * request_handler(void *arg) { int clnt_sock = *((int *)arg); char req_line[SMALL_BUF]; FILE *clnt_read; FILE *clnt_write; char method[10]; char ct[15]; char file_name[30]; /*將套接字轉換為標準I/O操作*/ clnt_read = fdopen(clnt_sock, "r"); clnt_write = fdopen(dup(clnt_sock), "w"); fgets(req_line, SMALL_BUF, clnt_read);//保存請求行數據 if (strstr(req_line, "HTTP/") == NULL) //查看是否為HTTP提出的請求 { send_error(clnt_write); fclose(clnt_read); fclose(clnt_write); return NULL; }(IT外包)

  strcpy(method, strtok(req_line, " /")); //請求方式 strcpy(file_name, strtok(NULL, " /")); //請求的文件名 strcpy(ct, content_type(file_name)); //請求內容類型 if (strcmp(method, "GET") != 0) //是否為GET請求 { send_error(clnt_write); fclose(clnt_read); fclose(clnt_write); return NULL; } fclose(clnt_read); send_data(clnt_write, ct, file_name); //響應給客服端 return NULL; } //服務端響應消息 void send_data(FILE *fp, char *ct, char *file_name) { char protocol[] = "HTTP/1.0 200 OK\r\n"; //狀態行(用HTTP1.1版本進行響應,你的請求已經正確處理) char server[] = "Server: Linux Web Server \r\n"; //服務端名 char cnt_len[] = "Content-length: 2048\r\n"; //數據長度不超過2048 char cnt_type[SMALL_BUF]; char buf[BUF_SIZE]; FILE *send_file; sprintf(cnt_type, "Content-type: %s\r\n\r\n", ct); send_file = fopen(file_name, "r"); //讀本地配置文件 if (send_file == NULL) { send_error(fp); return; } /*傳輸頭信息*/ fputs(protocol, fp); fputs(server, fp); fputs(cnt_len, fp); fputs(cnt_type, fp); /*傳輸請求數據*/ while (fgets(buf, BUF_SIZE, send_file) != NULL) { fputs(buf, fp); fflush(fp); } fflush(fp); fclose(fp); //服務端響應客服端請求后立即斷開連接(短鏈接) } //請求數據的類型 char * content_type(char *file) { char extension[SMALL_BUF]; char file_name[SMALL_BUF]; strcpy(file_name, file); strtok(file_name, "."); strcpy(extension, strtok(NULL, ".")); if (!strcmp(extension, "html") || !strcmp(extension, "htm")) return "text/html"; //html格式的文本數據 else return "text/plain"; } //發送客服端錯誤處理 void send_error(FILE *fp) { char protocol[] = "HTTP/1.0 400 Bad Request\r\n"; //請求文件不存在 char server[] = "Server: Linux Web Server \r\n"; char cnt_len[] = "Content-length: 2048\r\n"; char cnt_type[] = "Content-type: text/html\r\n\r\n"; char content[] = "發生錯誤!查看請求文件名和請求方式!"; fputs(protocol, fp); fputs(server, fp); fputs(cnt_len, fp); fputs(cnt_type, fp); fputs(content, fp); fflush(fp); fclose(fp); } //控制臺錯誤打印 void error_handling(char *message) { fputs(message, stderr); fputc('\n', stderr); exit(1); }

  打開瀏覽器,地址欄輸入服務端的IP,端口,請求的文件名信息訪問服務器:http://192.168.0.185:8389/index.html。(測試:index.html:在本地用記事本自己隨便寫點東西保存為html格式即可)(網絡管理外包

  

制作HTTP服務器端

  艾銻無限是中國領先IT外包服務商,專業為企業提供IT運維外包、電腦維護網絡維護、網絡布線、辦公設備維護、服務器維護數據備份恢復、門禁監控、網站建設等多項IT服務外包,服務熱線:400-650-7820 聯系電話:010-62684652 咨詢QQ2050684097;1548853602 地址:北京市海淀區北京科技會展2號樓16D,用心服務每一天,為企業的發展提升更高的效率,創造更大的價值。

  更多的IT外包信息盡在艾銻無限http://m.whgoodly.com


相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 久久久精品午夜免费不卡_99免费在线视频观看_啊v视频_神马香蕉久久_免费看一级黄色_欧亚av_亚洲热视频在线观看_久久精品免费看 | 密色影院_成人国产精品久久久春色_国产a一区二区_久久免费看_美女光胸无遮挡18禁止观看_日韩在线一级片_欧美日韩精品欧美日韩精品一_成人欧美在线 | 理论片午午伦夜理片影院_色亚洲天堂_色婷婷激情一区二区三区_亚洲综合色无码_日韩av人人夜夜澡人人爽_老牛无码人妻精品1国产_色欲欲WWW成人网站_中文字幕av无码专区第一页 | av毛片一区二区三区_人妻VA精品VA欧美VA_新91视频在线观看_蜜臀av中文字幕_日韩欧美在线播放视频_午夜影院免费体验区_日本成人在线观看网站_人人爱人人乐免费 | 国产农村妇女三级全黄91_国产精品偷伦视频免费观看了_亚洲国产一区二区三区在线播_精品无码人妻一区二区三区_好男人好资源在线观看免费视频_国产精品精品久久久_妹子干综合_午夜观看 | 国产高清学生妹在线观看视频一区_亚洲精品四区麻豆文化传媒_无限资源日本_亚洲综合播放_亚洲欧洲一区二区在线观看_在线观看中文字幕一区二区_精品乱子伦一区日本午夜_亚洲人av高清无码 | av在线免费观看网站_1024在线免费观看_国产成人午夜性a一级毛片_国产微拍精品_五月丁香六月狠狠爱综合_老女人综合网_男同男性xx视频在线观看免费_亚洲第99页 | 天堂网www天堂在线资源_2020日日夜夜噜噜噜com_18禁成年免费无码国产_好色一区_91freehdxxxx欧美_4p在线观看_可以免费观看的av_国产热A欧美热A在线视频 | 超碰二区_精品剧情V国产在线观看_色屁屁WWW免费看欧美激情_国产美女裸体丝袜喷水视频_免费又黄又爽又猛大片午夜_在线黄色av网站_国产91白丝在线播放_高潮喷水的网站 | 日韩第一页在线观看_看av在线_一区免费_日韩在线视频精品_91色爱_国产成人精品av在线_9区中文字幕在线_成熟丰满熟妇高潮XXXXX视频 | 东京热无码av一区二区_蜜桃视频在线观看入口_中文字字幕在线乱码_国产乱子夫妻_国精品午夜福利视频不卡_男人的天堂日本_蜜芽国产成人精品区_久久嫩草影院免费看 欧美午夜寂寞影院_91精品欧美一区综合在线观看_中文字幕乱码亚洲无线码按摩_免费看片免费播放国产_精品视频二区_韩日a级片_日本XXXX色视频在线观看免费,_亚洲成av人影片在线观看 | 九九国产精品无码免费视频_亚洲国产日韩在线一区模特_传媒大片免费在线观看网站_免费一级毛片观看_亚洲免费av网站_欧美国产综合在线_日韩在线播放网址_2020年最新国产精品正在播放 久久久久久久波多野结衣高潮_殴美在线一区二区不卡_不戴奶罩的教师水卜樱在线观看_撕开奶罩揉吮奶头高潮av_亚洲精品aⅴ_久天啪天天久久99久久_成人午夜激情视频_免费的av在线 | 日日操日日爽_一级毛片免费网站_久久久国产一区二区_日韩av免费在线播放_欧美国产日韩久久MV_国产精品∧V在线观看_国产动作大片中文字幕_国产美女自卫慰视频福利 | 在线天堂资源www中文_特级无码A级毛片特黄_中文字幕2018第一页_影音先锋成人影院_天天番号网_亚洲经典视频_日本狠狠色_国产乱码久久久久久 | 久久爽久久爽久久av东京爽_成人日韩精品_脱了老师内裤猛烈进入的软件_欧洲国产精品精华液_国产乱子伦精品无码专区_亚洲一卡二卡三卡四卡无卡网站_蜜桃av在线_97精华最好的产品在线 男ji大巴进入女人的视频免费看_国产精品99久久久久久宅男_国产一区二区三区精品视频_亚洲av无码久久寂寞少妇_国产在线观看影视_a级网站在线观看_欧美黄色片网站_91久久久久久白丝白浆欲热蜜臀 | www.色日本_91xxx在线观看_91蜜桃在线观看_中国XVIDEOS厕所偷窥_cao榴_99热门精品一区二区三区无码_欧美最厉害的喷水VIDEOS_99这里有精品视频 | 国产乡下三级全黄三级BD_无码AV免费网站_免费在线观看一区二区_2021国产va在线_成年人黄色在线观看_欧美久久久久久久久_91精品国产91久久久久久三级_一区二区三区精密机械公司 | 久久精品视频免费看_国产成人精品免费视频大全五_三级在线国产_伊人久久久精品区aaa片_gogogo高清在线观看免费中国_少妇激烈床戏视频_国产精品999在线观看_超碰97在线免费 | 草久在线观看视频_免费在线看无码a_毛片a久久99亚洲欧美毛片_国产精品扒开腿做爽爽爽A片唱戏_国产区91_免费在线成人影院_97超碰碰碰_女女综合网 | 97亚色_青草综合一区二区三区_国产二区视频在线播放_黄色一区二区在线观看_美女黄色一级视频_日本黄色免费片_曰本丰满熟妇XXXX性_精品国产成人av | 一级片在线观看视频_h纯肉无遮掩3d动漫在线观看_av片网站在线观看_久久一级淫片_狠狠色综合久久丁香婷婷_久久av在线播放_国产一二在线_chinesexxxxhd成熟 | 国产麻豆一区二区三区在线观看_久久精品国产首页027007_亚洲国产精品自产在线播放_免费精品国偷自产在线青年_日韩无马砖区芒果_美女全黄视频_国产精品自在线_蜜臀久久99精品久久久久久 | 91成人亚洲综合欧美日韩_亚洲福利精品视频_正在播放白领少妇第一次_亚洲人成网站观看在线播放_久久精品h_亚洲乱码日产精品bd在线观看_中文视频一区视频二区视频三区_人禽杂交18禁网站免费 | 国产成人在线观看网站_久热RE这里精品视频在线6_鲁大师在线影院免费观看_狠狠综合亚洲综合亚洲色_久久中文字幕亚洲精品最新_亚洲欧美综合_亚洲AV无码日韩AV无码网站冲_特黄一级性片看 | www.黄色网址.com_九一在线啪_国产导航在线_亚洲国产日韩不卡一区二区_国内精品久久久久影院网站_最新国产视频_伊人欧美视频_日韩久草视频 | 久久久国产精华液_制服丝袜第10页综合_亚洲色无码a片一区二区麻豆_40岁成熟女人牲交片_国产欧美一区二区三区国产幕精品_欧美gogo_日本无人区码suv_人人性人人爱 中文字幕无码日韩专区_久久艹逼_男人j进女人p免费视频_日本黄色免费在线_天堂综合网久久_亚洲欧美国产精品久久久久_中文字幕日韩高清2024_亚洲欧美激情精品一区二区 | 国内精品久久无码人妻_久久国产精品大桥未久av_亚洲最大日韩中文字幕另类_91看片免费版_亚洲中文字幕久久精品无码va_操操操视频_五十高熟中文字幕_91一区二区三区四区 | 亚洲一区二区三区AV在线观看_黄色一级视屏_日韩欧美精品二区_精品国产区一区二_亚洲午夜激情影院_www九色_久久精品国产视频_aV性色在线乱叫 | 四虎看片_国产精品网站在线_放个毛片看看_2024国产在线拍揄自揄视频_青春草国产_视频精品中文字幕一区二区_亚洲夜色_777在线视频 | 亚洲制服无码一区二区三区_视频丨9l丨白浆_欧美黑人XXXⅩ高潮交_欧美亚洲欧美_免费视频色_九九99九九精彩9_亚洲AV久久无码精品国产_怦然心动2在线观看免费高清 | 天天躁日日躁狠狠的躁天龙影院_日韩网站在线观看_成年人视频在线看_国产乱码精品一区二区三区麻豆_久久九九国产精品_一本一道AV无码中文字幕﹣百度_99热这里只有精品4_嫩草91在线 | av毛片一区二区三区_人妻VA精品VA欧美VA_新91视频在线观看_蜜臀av中文字幕_日韩欧美在线播放视频_午夜影院免费体验区_日本成人在线观看网站_人人爱人人乐免费 | 亚洲精品久久久久高潮_欧美精品毛片_tube麻豆_无套内射视频囯产_自拍偷自拍亚洲精品一区_成年人视频免费在线观看_伊人大杳焦在久久综合网_18禁裸体动漫美女无遮挡网站 | gogo大胆无码免费视频列表_亚洲精品秘在线看_国产成人综合在线女婷五月99播放_日韩一区二区三区四区区区_成年人黄页_国产福利毛片_欧美日韩一区二区三区不卡_日韩无在线 | 久久爽久久爽久久av东京爽_成人日韩精品_脱了老师内裤猛烈进入的软件_欧洲国产精品精华液_国产乱子伦精品无码专区_亚洲一卡二卡三卡四卡无卡网站_蜜桃av在线_97精华最好的产品在线 男ji大巴进入女人的视频免费看_国产精品99久久久久久宅男_国产一区二区三区精品视频_亚洲av无码久久寂寞少妇_国产在线观看影视_a级网站在线观看_欧美黄色片网站_91久久久久久白丝白浆欲热蜜臀 | 国产精品成人VA在线播放_国产aⅴ精品一区二区三理论片_黄色片哪里可以看_国产农村女人一级毛片了_饕餮记在线观看_别揉我奶头~嗯~啊~视频在线观看_伊人色爱_国产91aaa | 日本伦理一区_日本一区免费看_蜜臀人妻精品一区二区免费_涩涩一区二区_136av福利视频导航入口_在线观看热码亚洲av每日更新_国产精品一区91_一本一道久久a久久精品 | 欧美高清FREEXXXX性_好大好硬好爽18禁视频_HEYZO无码综合国产精蜜臀_天天av综合_在线国产福利精品_亚洲另类伦春色综合妖色成人网_免费无套内谢少妇毛片A片软_免费不卡欧美自拍视频 | 99精品视频在线看_无码毛片一区二区本码视频_中文字幕无码日本欧美大片_欧美肉大捧一进一出_后入内射国产一区二区_avhd老司机101_欧美在线观看网站_视频亚洲区 | 亚洲精品日本无v一区_久久精品一区二区三区日韩_欧美激情在线观看一区二区三区_日本黄色录像一级片_91视频色板_在线免费看黄色片_久久中文字幕精品_酒店大战丝袜高跟鞋人妻 | eeuss秋霞午夜免费影院四平_天天爱天天操天天干_少妇高潮久久久久久潘金莲_福利一区二区_国产成在线观看免费视频成本人_成人毛片a_999久久精品_国产男女猛烈无遮挡免费视频 |