【转】c语言实现HTTP SERVER

#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);
}

  

时间: 2024-10-03 02:51:14

【转】c语言实现HTTP SERVER的相关文章

R语言与SQL server链接

第一步:创建数据源(方法见下面链接) http://www.2cto.com/database/201412/365396.html 第二步:在R中输入以下代码: #####SQL SERVER与R语言互连###### library(RODBC); dbhandle <- odbcDriverConnect('driver={SQL Server};server=(local);database=TESTdatabase;trusted_connection=true');#TESTdatab

VS用C语言连接SQL Server解决办法

我在CSDN论坛上问了这个问题,但是没有人理我,折腾了半天终于搞定了. 原帖链接,没有解决办法,下面提供解决办法. 确认打开了SQL Server服务 首先,从我的电脑->右键->管理进入 确认SQL Server服务打开. 也可以使用cmd(命令行窗口),用管理员身份打开cmd,输入 net start [服务名] 效果如下图所示: 如果服务名中间有空格,请务必加上双引号. 配置ODBC 具体方法见链接. 请一定要注意,代码中的服务器名称必须是数据源的名称,也就是连接中的"SQLS

ABAP,Java, nodejs和go语言的web server编程

ABAP and Java see my blog. nodejs 用nodejs现成的express module,几行代码就能写个server出来: var express = require('express'); var routesEngine = require('./jerryapp/routes/index.js'); // index.js actually http://www.ruanyifeng.com/blog/2015/05/require.html var app

SQL Server 205 的硬件和软件要求(官方全面)

SQL Server 2005 安装要求 本主题介绍了安装 SQL Server 205 的硬件和软件要求,以及查看安装文档的说明. 硬件和软件要求(32 位和 64 位) 访问 SQL Server 2005 联机丛书以获取安装信息 硬件和软件要求(32 位和 64 位) 以下部分列出了运行 Microsoft SQL Server 2005 的最低硬件和软件要求. 注意: 在 32 位平台和在 64 位平台上运行 SQL Server 2005 的要求是不同的. 硬件和软件要求(32 位和

安装 SQL Server 2008 R2 的硬件和软件要求(转)

以下各部分列出了安装和运行 SQL Server 2008 R2 的最低硬件和软件要求.有关 SharePoint 集成模式下的 Analysis Services 的要求的详细信息,请参阅硬件和软件要求 (PowerPivot for SharePoint). 对于 SQL Server 2008 R2 的 32 位和 64 位版本,适用以下要求: SQL Server 2008 R2 Datacenter 有评估版可供使用,试用期为 180 天.有关详细信息,请参阅 SQL Server:

SQL Server 2014 SP1 通过补丁KB3058865提供更新,SP1一文便知

Microsoft SQL Server 2014 SP1 更新: SQLServer2014SP1-KB3058865-architecture-language.exe 安装完成后版本 12.0.4100.1. 主要特性包如下: Microsoft® SQL Server® Backup to Windows® Azure® Tool Microsoft SQL Server Backup to Windows Azure Tool 支持备份到 Windows Azure Blob 存储,加

安装 SQL Server 2012 的硬件和软件要求(官方全面)

以下各节列出了安装和运行 SQL Server 2012 的最低硬件和软件要求. Hardware and Software Requirements (PowerPivot for SharePoint and Reporting Services in SharePoint Mode).' data-guid="ac62f277a77cf0fe4624123fb93d4313">有关 SharePoint 集成模式下 Analysis Services 的要求的详细信息,请参

SQL Server 2005 硬件级软件要求

SQL Server 2005 安装要求 本主题介绍了安装 SQL Server 205 的硬件和软件要求,以及查看安装文档的说明. 硬件和软件要求(32 位和 64 位) 访问 SQL Server 2005 联机丛书以获取安装信息 硬件和软件要求(32 位和 64 位) 以下部分列出了运行 Microsoft SQL Server 2005 的最低硬件和软件要求. 注意: 在 32 位平台和在 64 位平台上运行 SQL Server 2005 的要求是不同的. 硬件和软件要求(32 位和

用VisualSVN Server创建版本库,以及TortoiseSVN的使用

介绍了VisualSVN Server和TortoiseSVN的下载,安装,汉化. SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,文档的下载地址. windows操作系统下面的二进制文件