zoukankan      html  css  js  c++  java
  • httpd的基本原理

    代码
    #include <sys/socket.h>
    #include
    <string.h>
    #include
    <netinet/in.h>
    #include
    <errno.h>


    int main(int argc, char** argv)
    {
    int s, con;
    struct sockaddr_in cliaddr, servaddr;

    s
    = 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(8080);

    bind(s, (
    conststruct sockaddr *)&servaddr, sizeof(servaddr));

    int err;
    if((err = listen(s, 10)) ==-1)
    printf(
    "errno is %d\n", errno);

    for(; ;){
    //组塞地接受一个客户或连接
    con = accept(s, 0, 0);

    //recv request
    char request[1024] = {0};
    ssize_t ret
    = recv(con, request, sizeof(request), 0);
    printf(
    "%s", request);

    //whatever we recv, we send 200 reponse
    {
    char content[] ="<head><title>index.html</title></head><body>index.html</body>";
    char reponse[512];
    sprintf(reponse,
    "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length: %d\r\n\r\n%s", strlen(content), content);
    ret
    = send(con, reponse, strlen(reponse), 0);
    }

    close(con);}
    }

    大部分的代码来自 http://www.cppblog.com/kevinlynx/archive/2008/07/30/57521.html

    我只改了一点

    我在Ubuntu上用chrome测试 http://localhost:8080/index.html 

    会输出以下结果:

  • 相关阅读:
    uva 550
    uva 10110
    uva 10014
    uva 10177
    uva 846
    Dear Project Manager, I Hate You
    创业型软件公司的心得
    架构设计的心得
    程序员常去的103个网站
    66个经典源码网站
  • 原文地址:https://www.cnblogs.com/lxgeek/p/1949189.html
Copyright © 2011-2022 走看看