⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpd.c

📁 resinweb服务器源文件
💻 C
字号:
#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <fcntl.h>#include "rws.h"intrws_connect(){  struct sockaddr_in sin;  int sock = socket(AF_INET, SOCK_STREAM, 0);  memset(&sin, 0, sizeof(sin));  sin.sin_port = htons(8090);  bind(sock, (struct sockaddr *) &sin, sizeof (sin));  listen(sock, 5);  return sock;}voidrws_accept(int sock){  struct sockaddr_in sin;  int len = sizeof(sin);  char readbuf[4096];  stream_t s;  pool_t *pool;  request_t *req;  char *buf = ("HTTP/1.0 200 OK\r\n"	       "\r\n");  int buflen = strlen(buf);  int fd;  int ch;  int subfd;  int readlen = 0;  memset(&req, 0, sizeof(request_t));  while (1) {    fd = accept(sock, (struct sockaddr *) &sin, &len);    rws_open(&s, fd);        pool = rws_create_pool();    req = rws_malloc(pool, sizeof(request_t));    memset(req, 0, sizeof(request_t));    req->pool = pool;    rws_scan_request(&s, req);        rws_write(&s, buf, buflen);    if (readlen <= 0) {      subfd = open("/home/ferg/ws/resin/doc/test/hello_file.html", O_RDONLY);      readlen = read(subfd, readbuf, sizeof(readbuf));            close(subfd);    }    if (readlen >= 0) {      rws_write(&s, readbuf, readlen);      rws_flush(&s);    }    rws_close(&s);    rws_free_pool(pool);  }}intmain(){  int sock = rws_connect();  rws_accept(sock);}

⌨️ 快捷键说明

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