【轉】c語言實現HTTP SERVER

來源:互聯網
上載者:User

標籤:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>#define PORT 8080                       // 伺服器監聽連接埠void errorHandling(char *message);  // 錯誤處理int main(int argc, char *argv[]){    int serv_sock;             // 儲存後面建立的伺服器通訊端    int clnt_sock;             // 儲存接受請求的用戶端通訊端    char buf[1024];      // 緩衝區    struct sockaddr_in serv_addr; // 儲存伺服器通訊端地址資訊    struct sockaddr_in clnt_addr; // 儲存用戶端通訊端地址資訊     socklen_t clnt_addr_size;   // 用戶端通訊端地址變數的大小    // 發送給用戶端的固定內容    char status[] = "HTTP/1.0 200 OK\r\n";    char header[] = "Server: A Simple Web Server\r\nContent-Type: text/html\r\n\r\n";    char body[] = "<html><head><title>A Simple Web Server</title></head><body><h2>Welcome!</h2><p>This is shiyanlou!</p></body></html>";    // 建立一個伺服器通訊端    serv_sock = socket(PF_INET, SOCK_STREAM, 0);    if(-1 == serv_sock){        errorHandling("socket() error");    }    // 配置通訊端IP和連接埠資訊    memset(&serv_addr, 0, sizeof(serv_addr));    serv_addr.sin_family = AF_INET;    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);    serv_addr.sin_port = htons(PORT);    // 綁定伺服器通訊端    if(-1 == bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr))){        errorHandling("bind() error");    }    // 監聽伺服器通訊端    if(-1 == listen(serv_sock, 5)){        errorHandling("listen() error");    }    // 接受用戶端的請求    clnt_addr_size = sizeof(clnt_addr);    clnt_sock = accept(serv_sock, (struct sockaddr *) &clnt_addr, &clnt_addr_size);    if(-1 == clnt_sock){        errorHandling("accept() error");    }    // 讀取用戶端請求    read(clnt_sock, buf, sizeof(buf) -1);    printf("%s", buf);    // 向用戶端通訊端發送資訊    write(clnt_sock, status, sizeof(status));    write(clnt_sock, header, sizeof(header));    write(clnt_sock, body, sizeof(body));    // 關閉通訊端    close(clnt_sock);    close(serv_sock);    return 0;}void errorHandling(char *message){    fputs(message, stderr);    fputc(‘\n‘, stderr);    exit(1);}

  

【轉】c語言實現HTTP SERVER

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.