首页 > 代码库 > 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