日本高清免费一本视频100禁_在线不卡欧美精品一区二区三区_国产一区二区好的精华液_中文综合在线_国产啊啊啊视频在线观看_大地资源网免费观看高清

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://www.maosdadas.net


相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 国产精品国产三级在线高清观看_久久久国产一区_午夜毛片免费看20次_久久久免费看视频_sm脚奴调教丨踩踏贱奴_久久久噜噜噜_老女人综合网_国产成人午夜精品福利视频 | 精品视频自拍_在线观看xxxx7777视频_天天艹视频_国产手机av在线_永久免费无码AV网站在线观看_国产精品45p_久久av青久久久av三区三区_国产精品美女久久久久图片 | 一级毛片免费在线_雪白浑圆高耸光滑呻吟_伊人精品_伊人久久综合精品久久_欧美精品综合_一夜新娘第三季高清免费观看_亚洲综合精品一区_成人一级免费视频 | 国产裸体写真av一区二区_337p日本大胆欧美人_久久久久久久亚洲AV无码_国产在线高清精品_亚洲成色精品一区二区三区_99久久免费精品国产免费高清_激情五月人体_国产iv一区二区三区 | 国产成人无码av一区二区在线观看_91久久爽久久爽爽久久片_天天天天天干_97超超碰_精品无码久久久久国产_欧美不卡中文字幕一区二区_国产伦精品一区二区三区妓女_日本高清免费视频 | 精品99久久_日本人妻人人人澡人人爽_黄色片免费看_黄绝一级毛片_国产精品性色一区二区三区_天天做爰天天爽_性暴力欧美猛交在线播放_久久精品国产亚洲77788 | 婷婷久久精品_九九热这里都是精品_色综合色狠狠天天综合网_国产精一区_久久中文一区二区_亚洲AV最新天堂地址_国产精品污www一区二区三区_free男子游泳部一季免费观看 | 公天天吃我奶躁我的在线观看_午夜激情网_2021精品亚洲中文字幕_国产免费小视频_九九热在线观看_欧美亚洲日本国产其他_国产高潮呻吟久久_亚洲精品成人a在线观看 | 亚洲夜夜性无码_国产欧美日韩久久久久_亚洲无嘛_成人你懂的_久久视频在线_成人美女视频免费_国产精品老熟女露脸视频_精品亚洲成a人无码成a在线观看 | 日日噜噜夜夜狠狠久久蜜桃_CHINESE熟女熟妇1乱老女人_亚洲a片成人无码av_香蕉久久人人97超碰caoproen_2024国产在线拍揄自揄视频_国产伦精品一区二区三区无广告_在线综合视频_成人欧美一区二区三区男男 | 天堂俺去俺来也www_日本一区二区久久免费黑人精品_日韩a片r级无码中文字幕_久久AV超清_亚洲视频在线观看不卡_国产亚洲精品美女久久久_亚洲第一在线_天天操综合网 | 国产免费自拍av_亚洲成人蜜桃_中文字幕乱码亚洲无线三区_无限动漫视频在线观看免费动漫_真人性囗交69视频_久久婷婷国产综合一区二区_孕妇奶水仑乱A级毛片在线播放_国产精品99久久99久久久二 | 超碰在线久_中文字幕けのぁ一般男女_91福利在线观看_7777日本精品一区二区三区_四虎永久地址www成人_在线天堂中文在线资源网_成人午夜天堂_旧里番高h无码无修在线观看 国产乱子伦精品免费女_AV人摸人人人澡人人超碰妓女_亚洲高清中文字幕免费_我爱我爱色成人网_亚洲一区不卡在线_夜夜未满十八勿进的爽爽影院_J97久久国产亚洲精品超碰热_日本高清久久久 | 日本高清成人免费播放_中文乱码字幕在线中文乱码_成人一级毛片_一区二区成人在线_欧美一区二区三区在线观看视频_欧美一级二级视频_三级a做爰一女二男视频_少妇极品熟妇人妻 | 久久久夜色精品亚洲a_亚州精品成人_91视频网入口_亚洲成人色图网_亚洲中文字幕av无码区_日韩免费观看av_国产伦理精品_谍战剧惊弦免费观看 | brazzershd欧美情趣丝袜_一区二区国产在线观看_亚洲国产精品点击进入_免费一二三区_自拍偷拍亚洲一区_亚洲国产精品一区二区美利坚_好男人在线社区www在线影院_亚洲国产成人精品女人久久久 | 日韩和欧美一区二区_中国极品少妇xxxxx_久久国产精品二国产精品中国洋人_久久狼人大香伊蕉国产_欧美亚洲免费_一个色亚洲_成人欧美一区二区三区黑人牛_日本怡春院一区二区三区 | 久久久久久臀欲欧美日韩_国产免费片_五月久久六月婷婷俺也去_久草在线欧美_一级片片_91大神精品视频_91麻豆精品国产91久久久_国产欧美精品 | 免费观看呢日本天堂视频_999久久国精品免费观看网站_少妇高潮a片无套内谢麻豆传_欧美在线一二_亚洲视频一级片_亚洲中文字幕无码超碰_各种高潮videos抽搐合集免费_麻豆出品必是精品 | wwwzzzyyy成人免费_黑人巨大跨种族VIDEO_亚洲AV无码一区二区三区性色_91高清免费_97国产在线播放_欧美日本免费无码永久_久久精品噜噜噜成人AV_国产日韩精品中文字无码 | 久草在线免_国产色视频免费_久久一区二区视频_欧美色三区_免费av直接进入_人妻出轨中文字幕不卡一区_爱操成人网_亚洲国产成av人天堂无码 | 九七午夜剧场福利写真_两性色黄视频在线观看_男ji大巴进入女人的视频免费看_亚洲永久免费_久久久线视频_国产麻豆影院_97爱爱视频_日本一级黄色大片 | 免费A级毛片无码鲁大师_又爽又黄axxx片免费观看_热久热久_欧美videosdesexo肥婆_亚洲a在线观看_av毛片免费观看_爆乳熟妇一区二区三区_日美韩一区二区三区 | 国产极品在线视频_不卡日韩_高潮到不停喷水的免费视频_欧美人妇做爰XXXⅩ性高_日本欧美久久久久免费播放网_国产网曝门99视频在线看_成人在线视频中文字幕_国产精品视频一区牛牛视频 | 国产亚洲欧美一区二区三区四区_99热综合_一区二区精彩视频_欧美一二三四五六七区_日韩免费视频在线观看_四虎一区二区_影音先锋黄色网址_成人hd | 亚洲国产精品成人综合色在线_中文字幕国语版毛片免费_精品视频第一页_国内高清久久久久久_亚洲精品国产suv_成人毛片视频免费_欧美成人综合视频_一区二区三区在线 | 天天摸天天碰天天操_欧美一区二区三区aa大片漫_亚洲小说乱欧美另类_97av在线_9的国产精选久久_日本一区二区成人_国产高清免费_亚洲中文字幕乱码一区 | 新91在线观看_久久中文字幕亚洲精品最新_AⅤ无码国产在线看_久青草国产在视频在线观看_免费h片在线观看_国产精品美女视频免费午夜版_猫咪成人官网_成人免费午夜视频69影院 | 国内精品免费一区二区三区_国产日韩欧美综合色视频在线_韩国精品无码午夜福利视预_韩国裸体美女_国产一级黄视频_日韩免费福利_久久久久久久久99精品大_一级黄色片国产 | 国产九一视频_妺妺晚上吃我精子黄文_国产一级黄色片视频_裸体洗澡偷拍一区二区_亚洲熟妇自偷自拍另欧美_亚洲天堂av网_国产精品精东影业_日韩久久久久久久久久久 aaa在线观看_澳门黄色毛片_污网站在线浏览_91成人午夜在线精品_无码精品A片一区二区_AV在线播放日韩亚洲欧_久久久国产精品亚洲一区_色网站免费看 | 中文字幕日日_无码国产精品一区二区免费式芒果_免费日韩精品_caoporn免费在线视频_最近2019中文免费高清视频观看www99_欧美超逼视频_国产成人激情_dvd女人裸体 | 成人一在线视频日韩国产_超碰在线公开97_久久亚洲精品国产一区_国产精品久久不能_午夜亚洲精品专区高潮日w_kaori肉感在线播放_www.四虎影视.com_欧美日韩久 | 自拍偷拍第6页_我有一个朋友在线观看_四虎成人精品国产永久免费无码_欧美牲交黑粗硬大_色爱综合网欧美_97aⅰ内射白浆蜜桃精品_青青草在线免费观看_亚洲精品不卡无码福利在线观看 | 中文AV无码人妻一区二区三区_超碰在线观看中文字幕_宅男色影视亚洲人在线_国产色视频一区二区三区_永久免费网站看黄yyy45视频_国产精品国产三级国产普通话_www.91桃色_一二三国产视频 | 中文无码vr最新无码av专区_成人A片色情免费观看_成人无码网WWW在线观看_精品久久久久一区二区_欧美大奶在线_成年人免费小视频_免费人成在线观看视频高潮_欧美大片aaa | 最新综合精品亚洲网址_粉嫩绯色av一区二区在线观看_91视频插插插_日日操爱视频_久久精品牌麻豆国产大山_久久精品视频网_日韩精品一区二区在线观看视频_亚洲精品一区二区三天美 | 亚洲av制服丝袜日韩高清_亚洲国产综合专区在线播放_一二三四在线观看视频韩国_最近免费观看在线中文2019_亚洲综合色久_日韩网站在线播放_亚洲成av人片在线观看高清_大地资源网高清视频免费观看 | 最近免费中文字幕在线视频2_国产又粗又猛又黄又爽无遮挡_在线播放国产不卡免费视频_国产精品久久久久影视_国产女厕所盗摄老师厕所嘘嘘_国产AV夜夜欢一区二区三区_99国产精品一区二区_国产精品亚洲精品久久精品 | 久久欧美_亚洲精品伦理_欧美一a_国产精品一区二区亚瑟不卡_俺也去色官网在线播放_91免费观看视频网站_罚女仆夹震蛋器憋尿虐乳网站_秋霞影院亚洲国产中文精品 | 欧美一区久久_亚洲精品一二三四区_特黄三级毛片_懂色av中文一区二区_在线播放成人av_国内啪啪_亚洲愉拍99热成人精品热久久_亚洲精品久久无码AV片软件 | 九七午夜剧场福利写真_两性色黄视频在线观看_男ji大巴进入女人的视频免费看_亚洲永久免费_久久久线视频_国产麻豆影院_97爱爱视频_日本一级黄色大片 |