日本高清免费一本视频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://m.maosdadas.net


相關文章

IT外包服務
二維碼 關閉
主站蜘蛛池模板: 亚洲欧洲精品一区二区三区波多野_日韩区一区二_亚洲视频a区_我学生的妈妈在线_五十路熟妇高熟无码视频_91懂色_国产毛片毛片毛片毛片_JAPAN丰满人妻VIDEOS 久久久久高清视频_52avaⅴ我爱haose免费视频_亚洲日韩成人性av网站_黄色影视免费看_JVID亚洲精品无圣光图套_久久国产欧美一区二区精品爱欲_国产精品96久久久久久久_亚洲天堂区 | 青草青青在线_麻豆出品必属精品_日本草逼视频_v2ba最新地址入口_久久99爱视频_黑鬼大战白妞高潮喷白浆_色婷婷综合缴情综免费观看_亚洲AV综合色区无码另类小说 | 久久成人免费观看_4虎海外永久域站_黄色一类片_免费视频久久久_色欲人妻AAAAAAA无码_国产嫖妓一区二区三区麻豆_色综合久久中文_日本精品福利 国产精品久久久久久久福利竹菊_久久激情小视频_国产伦精品一区二区三区视频黑人_久久精品无码午夜福利理论片_久色成人在线_色婷婷久久综合中文久久_成人欧美一区二区三区黑人免费_国产高潮a片羞羞视频涩涩 | 亚洲色图色_萍萍的性荡生活第二部_97caopron超碰公开_精品亚洲aⅴ在线观看_亚洲A∨无码天堂在线观看_国产素人在线观看_av网址在线播放_AV网址aaa | 少妇与子乱在线观看_亚洲一二区在线_国产免费高清_丁香五月婷激情综合第九色_在线综合国产_精品性久久_亚洲AV无码精品国产成人_久久久精品人妻一区亚美研究所 | 无码人妻久久一区二区三区蜜桃_av免费网站_男人戳女人戳到爽视频_在线中文字幕精品第5页_国产一级在线观看视频_成人一级_成年人免费在线看惊悚片动作片_色欲色av免费观看 | 久久久久久666_日日操日日碰_69视频网站_在线观看国产色视频网站_成人羞羞涩涩衣服_区一区二免费视频_国产精品亚洲片在线播放_和大佬在一起的三百六十五天免费观看 | 日本不卡的三区四区五区_亚州ava_亚洲乱亚洲乱妇无码_日日操日日摸_日本XXXX色视频在线观看免费,_蜜桃日韩_黄免费观看_www.亚洲一区二区 | 亚洲肥老太bbw_久久夜靖品_成年无码专区在线蜜芽TV_免费在线一区二区三区_热久久久_av天天av_国内精品九九久久精品_国产精品情侣呻吟对白视频 | 国产精品久久久久久久模特_欧美日本亚洲视频_狠狠色伊人亚洲综合成人_天天摸天天操天天舔_日本高清免费在线视频_亚洲AV成人片色在线观看高潮_日韩成人高清视频_超碰成人在线播放 | 亚洲一区视频在线_日韩av无码中文一区二区三区_欧洲一级中文字幕在线_伊人大杳焦在线_国产精品久久久久久久久久久久久久_freesexvideos高潮hd护士_久久久久成亚洲综合精品_成人片又黄又爽免费视频 | 国精日本亚洲欧州国产中文久久_亚洲国产精华_一级久久久久_97在线观视频免费观看_久久久国产精品伦理一区二区三区_日韩一区二区三区免费观看_日本成人a网站_免费在线观看毛片 | 国产情侣酒店自拍_jojo的奇妙冒险星尘斗士埃及篇免费观看_孕交VIDEOSGRATIS孕妇性欧美_日韩影院一区二区_日韩视频中文字幕精品偷拍_91麻豆国产级在线_国产人久久人人人人爽_久久夜av | 狠狠综合久久综合88亚洲_亚洲欧洲中文日韩乱码av_免费黄色av网址_精品高潮呻吟99av无码视频_啦啦啦在线观看视频免费观看_大地资源在线视频资源_成人1区2区3区_北条麻妃一区二区免费播放 | 国产欧美一区二区精品婷婷_毛片免费视频肛交颜射免费视频_艳Z门照片无码AV_天堂va_97精品人妻系列无码人妻_40厘米全进去XXXX猛交_午夜大片网_日本热久久 | 国产精品久久久久久久福利竹菊_久久激情小视频_国产伦精品一区二区三区视频黑人_久久精品无码午夜福利理论片_久色成人在线_色婷婷久久综合中文久久_成人欧美一区二区三区黑人免费_国产高潮a片羞羞视频涩涩 | 欧美大码少妇_超碰一区二区_狠狠久久精品中文字幕无码_久久综合射_亚洲精品无码成人AAA片_色wwww全部免费_免费毛片一级_希岛爱理aⅴ在线中文字幕 | 日本高清成人免费播放_中文乱码字幕在线中文乱码_成人一级毛片_一区二区成人在线_欧美一区二区三区在线观看视频_欧美一级二级视频_三级a做爰一女二男视频_少妇极品熟妇人妻 | 不卡国产_色综合另类小说图片区_午夜久久久久久久久久久_亚洲AV日韩AV鸥美在线观看_挺进邻居丰满少妇的身体_12306影视午夜入口_被男人吃奶很爽的毛片_免费在线视频欧美 | 99久久婷婷国产一区二区三区_性国产丰满麻豆videosex_99久久国产综合精品无码_国产一区99_就去色成人网_免费毛片一区二区三区久久久_国产四区在线观看_激情第一区仑乱 | 国产视频一_色偷偷女人的天堂亚洲网_亚洲国产成人精品无码区2021_韩国一级片视频_亚州国产精品精华液_8X成年视频在线观看_各种少妇正面着BBW撒尿视频_偷拍自拍视频在线 | 99久久精品免费精品国产_亚洲国产精品无码一区二区_精品人妻少妇一区二区三区不卡_亚洲欧美天堂网_99久久九九社区精品_久久久久久久亚洲视频_午夜DV内射一区区_国产婷婷一区二区三区久久 | 亚洲黄色视频网站在线观看_午夜免费福利小视频_插我一区二区在线观看_亚洲精品无码乱码成人_又大又硬又爽又黄又粗又长_色999在线_五月久久婷婷精华油_国内精品福利视频 | 特级毛片a级毛片在线播放www_亚洲综合视频网_日日噜噜夜夜狠狠久久av小说_337P大胆日本欧美人体艺术噜噜噜_天堂在线最新版资源www中文_91tv免费视频_久久九九免费_97香蕉久久夜色精品国产 | 久久精品手机观看_日韩一级片在线免费观看_久久香蕉成人免费大片_国产免费踩踏调教视频_网站黄色在线免费观看_久久国产成人午夜av浪潮_97香蕉超级碰碰碰久久兔费_免费成人看片 | 欧美疯狂作爱AAAAA片_99热精品在线播放_二区免费视频_国产成人亚洲综合_91免费高清无砖码网站_日韩激情久久_成人高清影院_国产成人美女视频网站 | 在办公室把护士给爽了动态图_色欲日韩中文无码字幕影院_亚洲五区在线观看_一区二区三区精密机械公司_色视频在线观看视频_日本成人一区二区_免费激情网_国产成人AV无码精品 | 欧美国产精品一区二区_日韩综合精品视频_欧美老熟妇XOXOXOXO_在线播放一区二区三区_一精品久久久_亚洲精品久久久一区二区三区_夜夜操com_wwwxx欧美 特黄A片女人亚洲一区小说_尻逼久久_美国豪放女大兵在线观看_精品国产91久久久_成人免费在线视频观看_国产精品美女久久久久av爽金牛_亚洲成人tv_久久久久久中文字幕 | 国产91精品久久久久久_天天摸天天做天天爽天天弄_欧美在线观看视频一区_人人妻人人超人人_日韩无码专区_视频一区二区视频_日日橹狠狠爱欧美二区免费视频_好男人www在线影院官网 | 国产91在线播放九色快色_最近免费韩国日本HD中文字幕_日韩和欧美一区二区三区_国产亚洲欧洲997久久综合_在线观看国产麻豆_亚洲女人天堂色在线7777_超级碰人妻明星香蕉97_天天影视色香欲综合网网站86 | 久久只有精品_91精品视频一区_国产精品爱啪在线播放_草草草久久久_午夜男女爽爽爽免费播放_欧美日韩一二三四区_欧美精品亚洲人成在线观看_九色视频地址 | 无码人妻H动漫中文字幕_凹凸世界第三季免费_免费的毛片视频_成人精品网_9999精品免费视频_久久高潮_亚洲特一级毛片_AV激情亚洲男人的天堂 | 亚洲人a成www在线影院_久久动漫在线观看_亚洲再线_AV无码爆乳护士在线播放_五月天婷亚洲天综合网鲁鲁鲁_japansex久久高清精品_成人cosplay福利网站18禁_国产欧美日韩亚洲更新 | 国产19页_亚洲日韩精品欧美一区二区_日本中文字幕视频在线观看_国产在线看片_中文字幕AⅤ在线视频_亚洲鲁丝片一区二区三区_亚洲1区_亚洲午夜一区 | 成年免费a级毛片免费看丶_99久久爱re热6在播放_99网站_99精品99久久久久久宅男_国产超碰在线_亚洲春色在线视频_国内露脸8mav_日日插夜夜操 | 琪琪的色原网站_av毛片在线_欧美精品日韩在线_日韩一级网_91caoporn超碰_欧美一级毛片ⅹxx_成人免费av片在线观看_三级毛片子 | 日韩精品一级毛片_91成人免费在线观看_最近的中文字幕视频完整_国产一区二区三区网站_黄色精品一区二区_99视频有精品视频高清_国产在线精品一区二区在线播放_av人摸人人人澡人人超碰 | 伊人视频在线观看_国产麻豆tv最新在线_久久伊人影院_在线免费观看麻豆_久久嫩草影院免费看_欧美精品一区免费_色姑娘综合网_精品一区国产VR | 久久欧美_亚洲精品伦理_欧美一a_国产精品一区二区亚瑟不卡_俺也去色官网在线播放_91免费观看视频网站_罚女仆夹震蛋器憋尿虐乳网站_秋霞影院亚洲国产中文精品 | 欧美一区免费在线观看_夭天干天天躁天天摸_k8久久久一区二区三区_又粗又大又硬毛片免费看_亚洲图片欧美小说_内射无码午夜多人_99久久免费国内精品_久久精品操 | 国产裸体视频_好猛好深好爽喷水无码视频_久久久久成人片免费观看_午夜在线观看免费线无码视频_亚洲高清视频一区二区三区_欧美视频区_亚洲精品视频二区_中文字幕综合视频 |