?? server_web.c
字號:
#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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -