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://www.whgoodly.com


相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 日本爆乳片手机在线播放_凹凸世界第三季免费_久久人人槡人妻人人玩夜色AV_国产白嫩受无套呻吟_国产最新精品_精品久久久久久一区二区里番_国产又黄又大又粗视频_在线观看视频网站www色 | 免费看亚洲片_九一精品国产白色高跟鞋_久久无码专区国产精品S_欧美乱子YELLOWVIDEO_97影院九七理论片在线一二_99爱色_91亚洲国产成人久久精品网站_久久av一区二区三区 国产乡下三级全黄三级BD_无码AV免费网站_免费在线观看一区二区_2021国产va在线_成年人黄色在线观看_欧美久久久久久久久_91精品国产91久久久久久三级_一区二区三区精密机械公司 | 一级婬片a级中文字幕_久久久久久久国产a∨_久久艹精品视频_日本少妇高潮正在线播放_污草莓樱桃丝瓜秋葵榴莲黄瓜白狐_天堂在线观看av_欧美12一13sex性_最新亚洲一区 | 中文日韩在线视频_无码毛片一级高潮免费视频_毛片黄片_国产成人在线网址_国产特级全黄一级毛片_免费观看在线毛片_人人妻人人澡人人爽超污_日韩欧美国产系列 | 国产精品老熟女一区二区三区_69久久夜色精品国产69蝌蚪网_四虎永久在线精品免费一区二区_永久免费在线_精品国产一区二区三区国产区_天天天天天操_久久久久久AV无码免费网站_亚洲高清一区二 | 国产成人无码精品久久久免费_国产xxxx_欧美成人免费_97超碰97_色欲蜜桃AV无码中文字幕_老司机精品在线_九色视屏_av片免费看 | 国产精品亚洲片在线播放_久久综合九色综合欧美就去吻_男人扒开女人腿喷水视频_天天久久久_www.黄色片_日韩AV一区三区_国产制服丝袜免费视频_亚洲第一综合最大av | 久视频在线_国产99区_久久久精品免费免费_麻豆一区二区99久久久久_高清不卡一区_伊人久久综合一区二区_午夜a毛片_国产精品1 | 国产精品2020_超91在线_亚洲成a人片在线不卡一二三区_国产毛片久久久久久久久春天_亚洲好穴_色婷婷av_精产国品一二三区_午夜影院免费视频 | 国产免费午夜_国产免费无码一区二区三区_成人a级黄色片_国产成人av综合亚洲_亚洲va欧美va人人爽午夜_久久久免费的成人性教育片_国产一区二区0_免费无遮挡www小视频 | 熟睡人妻被讨厌的公侵犯_精品成人网_亚洲一区二区久久久久久_猫咪在线永久网站_老司机精品视频一区二区_日本免费AⅤ欧美在线观看_啦啦啦在线观看视频免费观看_国产精品美女久久久婷婷网站 | 黄色av日韩_男人的天堂色_国产一乱一伦一情_91人人干_国产秋霞理论久久久_一区二区在线播放视频_亚洲国产欧美在线人成最新_亚洲av网址在线观看 | 国产大片免费完整观看_国产精品亚洲综合_91麻豆免费视频网站_亚洲人成网站在线在线_一级卡毛片_国产潢片AAAAAAAAA免费_欧美三级真做在线观看_国产永久伊人影院 | 久久日韩_日韩一区免费视频_国产精品不卡在线播放_亚洲男同gay在线观看_国产精品视频精品_波多野结衣中文AV无码专区_性色av蜜臀av色欲av_久久夜色精品国产www | 无码免费人妻A片AAA毛片_免费一区二区三区四区_欧美粗大无套gay_日本色综合网_人人爽在线视频_欧一区二区三区_中文激情在线一区二区_一本岛道一二三不卡区 | 欧美劲爆婷婷五月久久_亚洲欧美自拍制服日韩一区_久久青草精品38国产_疯狂撞击丝袜人妻_福利一级片_日韩一区二区三区四区五区_最近2019年中文字幕_久久人人视频 | 91成人免费_久久伊人国产精品_日日操狠狠操_麻豆91在线视频_欧美成人在线免费_97久久天天综合色天天综合色hd_国产色婷婷综合影一区二区三区_亚洲欧美综合国产不卡 | CAOPORN国产精品免费视频_成人免费视频观看视频_亚洲高清在线看_黄色一级日本_成人va在线_日韩在线精品视频_2020久久超碰国产精品最新_云霸高清中文字幕第一页 | 国产区一区二区三_24小时免费看片_精品在线视频一区二区三区_精品久久国产精品_一个人看视频高清www俩个_久久精品1区_熟女泄火一区二区三区在线_日色视频 | 麻豆高清免费国产一区_日韩av一区二区三区美女毛片_国内精品久久久久影院优_欧美性猛交xxxx乱大交游戏_91在线免费看_91精品国产综合久久男男_久久久久久欧美_国产婷婷一区二区三区久久 | 欧美一级特黄aaaa_亚洲综合麻豆_人妻日本无中文字幕无码_久久久久毛片_www.伊人久久_老司机精品影院_成全动漫在线观看免费观看_日本亚洲网站 337P大尺度啪啪人体_国产一二三视频_在线亚洲网站_91av一二三区_小鸟酱福利视频_999观看免费高清www_婷婷日日_国产91精品欧美 | 四虎国产精品永久在线无码_两性午夜色视频免费网站_亚洲国产精品久久一线不卡_2019天天操_玩偶姐姐在线免费观看_国产精品99无码一区二区_亚洲第一在线_北条麻妃一区二区免费播放 | 黄动漫在线免费观看_www.91在线观看_国产欧美一级_欧美一级久久久久久久大片_91日本在线_18禁无码永久免费无限制网站_福利免费在线_日韩一级黄色片 | 久久www免费人成看片小草_国产卡一卡二卡乱码_噜啊噜在线成人A片观看_欧美一区3_欧美裸体XXXX_精品少妇一区二区三区在线视频_久草免费视_久久久国产成人一区二区 | 午夜影视国产片_久久精点视频_国产精品a久久777777_欧美国产日韩成人_国产女人视频在线观看_52avaⅴ我爱haose免费视频_成人A片色情免费观看_国产小视频在线观看 | 黄色成年网站_亚洲午夜无码AV毛片久久_sss海量视频在线观看_日韩精品卡1卡二卡3卡四卡_se亚洲_日本添下边无码视频全过程_性爱在线免费视频_亚洲熟妇无码AV不卡在线 | 国产精品久久久久久日本_亚洲AV综合AV成人小说_国产精品第四页_日本a级在线播放_黄色观看大全_av在线免费播放网站_99久久免费看精品国产一区_免费午夜一级 | 日本三级无码中文字幕DVD_大陆熟女丰满XXXXX富婆_2021在线精品自偷自拍无码_xxxx内射美国老太太_91精品国产综合久久久久久蜜月_成人午夜在线免费视频_无码精品每日更新精品久久久_国产91高清在线 | gogo大胆无码免费视频列表_亚洲精品秘在线看_国产成人综合在线女婷五月99播放_日韩一区二区三区四区区区_成年人黄页_国产福利毛片_欧美日韩一区二区三区不卡_日韩无在线 | 欧美1区2区在线观看_亚洲线精品一区二区三区四区_日本黄色免费网址_亚洲AV成人午夜一区二区_中文字幕在线不卡播放_粗大猛烈进出白浆视频_久草高清在线_欧美一级理论性理论a | 2019中文字幕在线_97精品超碰一区二区三区_亚洲精品自拍_国产成人毛片精品不卡在线_日黄的免费视频_国产美女一区二区三区在线观看_亚洲激情av在线_800AV凹凸视频免费观看 | 日本黄色一级_一夜新娘第三季在线观看_久久综合无码中文字幕无码ts_亚州一二区_国产性一交一乱一伦一色一情_亚洲欧洲国产综合AⅤ无码_国产精品揄拍一区二区_欧美啊v在线观看 | JLZZJLZZ全部女高潮_国产成人久久AV免费看_国产边打电话边被躁视频_欧美大黄大色一级毛片_韩国av网站在线观看_免费特级婬片日本高清视频_男人天堂2023_不卡精品 | 久久久久久久美女_国产A级护士毛片_国产亚洲精品久久久999密壂_欧美日韩免费在线观看_日韩一级片免费视频_国产精品久久久久久婷婷动漫_国产在线精品免费_久久在现视频 | 蜜臀久久精品久久久久久酒店?_日韩成人av影院_国产办公室秘书无码精品_中文字幕91爱爱_人妻丝袜AV中文系列先锋影音_欧美一区三区_国产精品美女久久久网站_无码精品一区二区三区四区爱奇艺 | 一级毛片免费在线_爱爱视频网站免费_亚洲无嘛_国产色片免费色网视频_伊人久久精品欧洲综合网_天堂va蜜桃一区_亚洲精品一区二区三区不_国产免费啪视频观看网站 | 国产亚洲精品久久久久久打不开_日本熟妇厨房XXXXX乱_99久久精品国产免费_国产综合13P_亚洲综合免费视频_99爱在线精品免费观看_中文字幕成熟丰满人妻_日本高清WWW午色夜在线视频 | 97超碰人人爽_91男生福利_丰满人妻一区二区三区av猛交_人妻天天爽夜夜爽一区二区_少妇人妻偷人精品一区二区_麻豆短视频免费_国产伦精品免费视频_夜夜欢天天干 | www.日日操_国产精品综合久久第一页_国产碰碰_avtt天堂网人妻系列_国产亚洲精品久久久久久无挡照片_久热草视频_人妻被修空调在夫面侵犯_欧美丰满熟妇xxxx性 | 日韩在线播放第一页_亚洲在线高清_国产网战无遮挡_久久久久人妻精品一区蜜桃_两性色午夜视频免费播放_一二三四在线观看免费中文在线观看_gav成人网免费免播放器播放_久久精品水蜜桃AV综合天堂 | www亚洲最大aⅴ成人天堂_国产精品视频1区2区3区_caoporn国产_91.久久_日韩av一区二区三区_日韩欧美亚洲综合久久_性xxxxfreexxxxx欧美牲交v_www.成色av久久成人 |