首页 > 代码库 > Linux环境下HTTP服务器demo
Linux环境下HTTP服务器demo
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <netinet/in.h>#include <sys/socket.h>#define BUF_LEN 1028 // 1028 ever#define PORT 8000const static char html_re_hd_su[] = "HTTP/1.1 200 OK\r\nContent-type: text/html\r\n\r\n"; //html response header : successint CreatTcpSocket_fd(){ int socket_fd; struct sockaddr_in address; socket_fd = socket(AF_INET, SOCK_STREAM, 0); //tcp protocal //catch up exception if(socket_fd < 0){ printf("socket creation failed\n"); exit(1); // 1 means exit with exception return 1; } //step 2: bind the socket file description memset(&address, 0, sizeof(address)); address.sin_family = AF_INET; //Internet protocal address.sin_port = htons(PORT); address.sin_addr.s_addr = INADDR_ANY; //set the host ip if(bind(socket_fd, (struct sockaddr*)&address, sizeof(struct sockaddr_in))){ //catch up exception printf("socket binding failed!\n"); exit(1); return 1; } return socket_fd;}void AnalyseTcpRequest(const int socket_fd){ char requestMessage[BUF_LEN]; read(socket_fd, requestMessage, BUF_LEN); printf("%s\n", requestMessage);}void ReplyTcpRequest(int socket_fd){ char replyMessage[]= "<html><head><title>Welcome!</title></head>" "<body><h1>Welcome to Feng YuBo HTTP server demo!</h1>" "<p>This is a just small test page.</p></body></html>"; write(socket_fd, html_re_hd_su, strlen(html_re_hd_su)); write(socket_fd, replyMessage, strlen(replyMessage)); printf("replyed...\n");}int main(){ int socket_fd = CreatTcpSocket_fd(); listen(socket_fd, 5); //max conection number is 5 now. //step 3: begin to accept tcp request struct sockaddr_in their_address; int their_sin_len = sizeof(struct sockaddr_in); for ( ; ; ) { printf("begin to accept tcp request...\n"); //begin to block the processing int newSocket_fd = accept(socket_fd, (struct sockaddr*)&their_address, &their_sin_len); printf("analysing...\n"); AnalyseTcpRequest(newSocket_fd); ReplyTcpRequest(newSocket_fd); close(newSocket_fd); } exit(0); return 0;}
目标: 1.接收HTTP请求 2.打印HTTP请求报文 3.返回HTTP响应报文 4.返回预设好的网页
Linux环境下HTTP服务器demo
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。