server_web.c

来自「网络编程中server的实现」· C语言 代码 · 共 79 行

C
79
字号
#include<sys/socket.h>#include<sys/fcntl.h>#include<netinet/in.h>#include<arpa/inet.h>#include<netdb.h>#include<string.h>#include<stdlib.h>#include<unistd.h>#include<stdio.h>#include<time.h>#define MAXLINE	128int main(int argc, char **argv){	int			listenfd, connfd, n;	struct sockaddr_in	servaddr, user_socket;	char			buff[MAXLINE];	time_t			ticks;	listenfd = socket(AF_INET, SOCK_STREAM, 0);	bzero(&servaddr, sizeof(servaddr));	servaddr.sin_family      = AF_INET;	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);	servaddr.sin_port        = htons(6789);	bind(listenfd, (struct sockaddr *) &servaddr, sizeof(servaddr));	listen(listenfd, 5);	for ( ; ; ) {		connfd = accept(listenfd, (struct sockaddr *) NULL, NULL);//**********************************************************************************		char buf[100];		read(connfd, buf, MAXLINE );////////////////////////////////////////////		FILE* read_from;		read_from = fopen("index.html", "r");		char* content_type = "text/html";		char read_buf[128];        //读文件时的字节缓存数组  		char* head = "HTTP/1.0 200 OK\r\n";     //正确的头部信息 		int len = strlen(head); 		write(connfd, head, len);		char temp_1[30] = "Content-type: ";    //准备好要连接的字串		strcat(temp_1, content_type);     //构造content_type		strcat(temp_1, "\r\n");		len = strlen(temp_1);		write(connfd, temp_1, len);		send(connfd, "\r\n", 2, 0);      //再加一个"\r\n" 不能缺少 格式要求  printf("?");		while (!feof(read_from)) 		{			fgets(read_buf, 128, read_from);						write(connfd, read_buf, strlen(read_buf));			continue;		}printf("?");/**************************************************************************        	ticks = time(NULL);        	snprintf(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));        	write(connfd, buff, strlen(buff));***************************************************************************/		fclose(read_from);		close(connfd);	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?