日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

webserver通信过程

發(fā)布時間:2025/6/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 webserver通信过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

?

?簡單的http服務器

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <string.h> #include <pthread.h> #include <sys/stat.h> #include <fcntl.h> #include <errno.h>#define N 1024 #define ERR_LOG(errmsg) do{\perror(errmsg);\printf("%s - %s - %d\n", __FILE__, __func__, __LINE__);\exit(1);\}while(0)void *pthread_fun(void *arg) {int acceptfd = *(int *)arg;char buf[N] = "";char head[]="HTTP/1.1 200 OK\r\n" \"Content-Type: text/html\r\n" \"\r\n"; char err[]= "HTTP/1.1 404 Not Found\r\n" \"Content-Type: text/html\r\n" \"\r\n" \"<HTML><BODY>File not found</BODY></HTML>";//接收瀏覽器通過http協(xié)議發(fā)送的數據包if(recv(acceptfd, buf, N, 0) < 0){ERR_LOG("fail to recv");}printf("*****************************\n\n");printf("%s\n", buf);// int i;// for(i = 0; i < 200; i++)// {// printf("[%c] - %d\n", buf[i], buf[i]);// }printf("\n*****************************\n");//通過獲取的數據包中得到瀏覽器要訪問的網頁文件名//GET /about.html http/1.1char filename[128] = "";sscanf(buf, "GET /%s", filename); //sscanf函數與空格結束,所以直接可以獲取文件名if(strncmp(filename, "HTTP/1.1", strlen("http/1.1")) == 0){strcpy(filename, "about.html");}printf("filename = %s\n", filename);char path[128] = "./sqlite/";strcat(path, filename);//通過解析出來的網頁文件名,查找本地中有沒有這個文件int fd;if((fd = open(path, O_RDONLY)) < 0){//如果文件不存在,則發(fā)送不存在對應的指令if(errno == ENOENT){if(send(acceptfd, err, strlen(err), 0) < 0){ERR_LOG("fail to send");}close(acceptfd);pthread_exit(NULL);}else{ERR_LOG("fail to open");}}//如果文件存在,先發(fā)送指令告知瀏覽器if(send(acceptfd, head, strlen(head), 0) < 0){ERR_LOG("fail to send");}//讀取網頁文件中的內容并發(fā)送給瀏覽器ssize_t bytes;char text[1024] = "";while((bytes = read(fd, text, 1024)) > 0){if(send(acceptfd, text, bytes, 0) < 0){ERR_LOG("fail to send");}}pthread_exit(NULL); }int main(int argc, char const *argv[]) {if(argc < 3){fprintf(stderr, "Usage: %s <server_ip> <server_port>\n", argv[0]);exit(1);} int sockfd, acceptfd;struct sockaddr_in serveraddr, clientaddr;socklen_t addrlen = sizeof(serveraddr);//第一步:創(chuàng)建套接字if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0){ERR_LOG("fail to socket");}//將套接字設置為允許重復使用本機地址或者為設置為端口復用int on = 1;if(setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) < 0){ERR_LOG("fail to setsockopt");}//第二步:填充服務器網絡信息結構體serveraddr.sin_family = AF_INET;serveraddr.sin_addr.s_addr = inet_addr(argv[1]);serveraddr.sin_port = htons(atoi(argv[2]));//第三步:將套接字與服務器網絡信息結構體綁定if(bind(sockfd, (struct sockaddr *)&serveraddr, addrlen) < 0){ERR_LOG("fail to bind");}//第四步:將套接字設置為被動監(jiān)聽狀態(tài)if(listen(sockfd, 5) < 0){ERR_LOG("fail to listen");}while(1){//第五步:阻塞等待客戶端的連接請求if((acceptfd = accept(sockfd, (struct sockaddr *)&clientaddr, &addrlen)) < 0){ERR_LOG("fail to accept");}//打印客戶端的信息printf("%s -- %d\n", inet_ntoa(clientaddr.sin_addr), ntohs(clientaddr.sin_port));//創(chuàng)建線程接收數據并處理數據pthread_t thread;if(pthread_create(&thread, NULL, pthread_fun, &acceptfd) != 0){ERR_LOG("fail to pthread_create");}pthread_detach(thread);}return 0; }

?

總結

以上是生活随笔為你收集整理的webserver通信过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 特黄特色大片免费播放器使用方法 | 久久嫩| 亚洲女人18毛片水真多 | 毛茸茸多毛bbb毛多视频 | 亚洲欧美日本一区二区三区 | 麻豆视频网 | 男人天堂五月天 | 亚洲精品一区在线观看 | 亚洲久热 | 尤物视频在线观看国产 | 亚洲国产精品久久 | 快色av | 国产精品一区二区久久久 | 午夜精品久久久久久久99老熟妇 | 国产伊人网 | 性感美女在线 | 另类视频一区 | 先锋影音av资源在线观看 | 天天躁日日躁狠狠很躁 | 91l九色lporny| 先锋资源网av | 夜夜高潮夜夜爽 | 懂色中文一区二区在线播放 | 91精品国产精品 | 日韩性高潮 | 丝袜一区二区三区 | 成年在线观看 | 久久久久久草 | 91av不卡 | 网址av | 夫妻淫语绿帽对白 | 国产中文一区 | 偷自拍 | 性感美女黄色片 | 亚洲综合精品一区 | 国产a不卡 | 亚洲一区网站 | 无码人妻精品一区二区三区99v | 欧美性潮喷xxxxx免费视频看 | 亚洲男人的天堂网 | 图书馆的女友动漫在线观看 | 俄罗斯嫩小性bbwbbw | 三上悠亚在线一区 | 欧美视频性 | 成年人看的黄色片 | 色999视频| 国产视频你懂的 | 亚洲 欧美 变态 另类 综合 | 加勒比波多野结衣 | 谁有毛片网站 | 日本91av| 蝌蚪网在线视频 | 欧美精品久久久久久 | 夜夜爽夜夜操 | 91精品视频在线 | 免费www xxx| 天堂网视频在线 | 亚洲欧美一区二区三区情侣bbw | 国产高清免费av | 久久精品人人爽 | 久久久www成人免费无遮挡大片 | 日韩精品一区二区三区免费视频 | 国模吧一区二区三区 | 精品欧美一区二区三区 | 少妇99| 一区免费视频 | 五月婷婷深深爱 | 国产情侣一区 | 亚洲涩涩 | 少妇被粗大猛进进出出s小说 | 欧美日韩国产精品 | 国产精品国产三级国产aⅴ无密码 | 欧美一级欧美三级在线观看 | 浓精喷进老师黑色丝袜在线观看 | 99九九久久 | 日韩欧美日本 | 向着小小的花蕾绽放 | 日日操天天操 | 亚洲成a人片 | 亚洲三区在线播放 | 操网| 人人澡人人澡人人澡 | 久久九九免费 | 亚洲第一视频区 | 五月婷婷丁香久久 | 欧美色图片区 | 一级片中文字幕 | 日韩一级生活片 | 精品国产鲁一鲁一区二区三区 | 国产精欧美一区二区三区白种人 | 在线免费视频一区 | 91蝌蚪 | 欧美丰满熟妇bbbbbb | 国产视频在线观看一区 | 免费午夜激情 | 在线中文字幕观看 | 福利一二三区 | 亚洲色图40p| 香蕉视频色 |