实现一个简单的http服务器

原创 2015年11月18日 12:48:46

实现一个简单的http服务器,能够将本地电脑作为一个后台服务器供客户端访问。

该实现只是一个简单的原型,用户跨域访问。

1,创建一个私有的socket,采用IP地址+端口号的形式访问,例如:http://192.168.0.123:3030/test.html

      创建socket(tcp):

      localfd = socket(AF_INET,SOCK_STREAM, 0)

      设置socket选项参数:

      setsockopt(localfd, SOL_SOCKET, SO_REUSEADDR, &resue, sizeof(int))

      memset(&local_addr, 0, sizeof(local_addr));
      local_addr.sin_family = AF_INET;
      local_addr.sin_port = htons(3030);
      local_addr.sin_addr.s_addr = INADDR_ANY;

      绑定socket参数到创建的socket上:

      bind(localfd, (struct sockaddr*)&local_addr, sizeof(struct sockaddr))

      设置本地socket的监听

       listen(localfd, 5)

   2,创建一个捕获消息的循环,在该循环中捕获客户端的请求,分发请求命令并处理:

      捕获用户请求消息:

      char buffer[512]

      fd = accept(localfd, (struct sockaddr*)&remote_addr, (socklen_t*)&addr_len)

      msgLen = recv(fd, buffer, 512, 0)

     如果msgLen>0,则处理用户请求消息

3,处理用户请求消息,根据状态作出相应的回复。

    stringstream responseOK;
    responseOK << "HTTP/1.1 200 OK\r\nContent-Type:text/plain\r\nContent-Length:" <<"0" << "\r\n\r\n";
   
    if (cmdline.find("test.html") != string::npos)

      {

          response << "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length:"
                 <<nFilesize<< "\r\n\r\n"  <<  buffer;

          send(fd, response.str().c_str(), response.str().length(), 0)

    }

    else if (cmdline.find("test.js") != string::npos)

    {

            response << "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nContent-Length:"
                 <<nFilesize<< "\r\n\r\n"  <<  buffer;
           send(fd, response.str().c_str(), response.str().length(), 0);

      }

      else    if(cmdline.find("para") != string::npos)

     该项是类似与http://192.168.0.123:3030/test.html?para=1,处理后进行类似的回复

    这样,在用户请求某些参数时,server就能够作出相应的处理后回复。

网络编程知识总结 之 简单的iOS HTTP服务器

title: 网络编程知识总结 之 简单的iOS HTTP服务器 date: 2017-06-28 23:20:42 tags: [iOS,网络编程]本文主要是通过OC实现一个简单的iOS HTT...
  • zenggen021151
  • zenggen021151
  • 2017年07月31日 19:54
  • 210

java实现一个简单的Web服务器

Web服务器也称为超文本传输协议服务器,使用http与其客户端进行通信,基于java的web服务器会使用两个重要的类, java.net.Socket类和java.net.ServerSocket类...
  • u012734441
  • u012734441
  • 2015年04月01日 07:31
  • 8769

一个简单的http服务器的实现 含源代码

EasyHttp 最简单的C语言 http服务器说明:这是一个C语言编写的http服务器简单实现,使用python语言作为cgi程序处理用户的表单输入。通过这个项目有利于理解http服务流程,以及多线...
  • hunterzhaominng
  • hunterzhaominng
  • 2016年04月12日 19:29
  • 1151

一个简易的java http服务器

TTP是个大协议,完整功能的HTTP服务器必须响应资源请求,将URL转换为本地系统的资源名。响应各种形式的HTTP请求(GET、POST等)。处理不存在的文件请求,返回各种形式的状态码,解析MIME类...
  • WALLEZhe
  • WALLEZhe
  • 2017年03月16日 16:32
  • 1088

利用http协议实现一个简单的web服务器

目录文件: htdoc: html文件: hello hello fucang ...
  • fucangzxx
  • fucangzxx
  • 2016年08月06日 10:27
  • 1915

编写一个简易的 HTTP 服务器程序

转载:http://blog.jobbole.com/107279/#article-comment 好久没输出了,知识还是要写下总结才能让思路更加清晰。最近在学习计算机网络相关的知识,来聊...
  • u012662731
  • u012662731
  • 2016年11月03日 20:05
  • 2041

简易HTTP服务器

HTTP协议的主要特点如下: 1.支持客户/服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的...
  • qq_35420908
  • qq_35420908
  • 2017年07月18日 12:27
  • 525

java造轮子之自己写简单的HTTP服务器

大概介绍一下原理吧,浏览器打开网页可以简单分为3个阶段: 1.通过socket向服务器发送一个符合一定格式的请求字符串(里面包含了用户输入的网址),比如: Acce...
  • A1023824314
  • A1023824314
  • 2016年07月20日 23:38
  • 1474

实现简单的HTTP服务器

转自:http://blog.csdn.net/linda1000/article/details/8087546 用Python实现简单的HTTP服务器 用于搭建http s...
  • Sloudy
  • Sloudy
  • 2015年03月22日 00:19
  • 2602

利用python搭建一个简单的http服务器

  • u011011025
  • u011011025
  • 2016年02月23日 15:18
  • 408
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现一个简单的http服务器
举报原因:
原因补充:

(最多只允许输入30个字)