实现一个简单的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就能够作出相应的处理后回复。

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

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

Python 实现一个简单的http服务器

背景 原文链接:http://blog.csdn.net/ordeder/article/details/22490373 写一个python脚本,实现简单的http服务器功能: 1...
  • cjsycyl
  • cjsycyl
  • 2014年11月18日 14:55
  • 775

#实现一个简单的HTTP服务器

用到的类主要有HttpListener、StreamWriter.   HttpListener:使用HttpListener可创建响应 HTTP 请求的简单 HTTP 协议侦听器。实际上Htt...

java实现一个简单的HTTP服务器,带打开网页和计算功能

首先是WebServer类,
  • wqztmx4
  • wqztmx4
  • 2014年04月30日 00:46
  • 485

node.js使用回调实现一个简单的HTTP服务器

回调是一个函数,它被当做参数传给异步函数,它描述了异步操作完成之后要做什么。回调在Node开发中用得很频繁,比事件发射器用得多,并且用起来也很简单。 下面用回调实现一个简单的HTTP服务器,实现以下功...

用Python socket 实现一个简单的http服务器(post 与get 的区别)、CGI、WSGI、MVC

预备知识: 关于http协议的基础请参考这里。 关于socket基础函数请参考这里。 关于python网络编程基础请参考这里。 废话不多说,前面实现过使用linux c 或者python 充当...

一个简单的http服务器的实现

一个简单的http服务器的实现 tkorays(tkorays@hotmail.com)

C#实现一个最简单的HTTP服务器

简介 本文用C#实现了一个最简单的HTTP服务器类,你可以将它嵌入到自己的项目中,或者也可以阅读代码来学习关于HTTP协议的知识。 背景 高性能的WEB应用一般都架设在强大的WEB服...

写一个python脚本,实现简单的http服务器功能:

原文链接:http://blog.csdn.net/ordeder/article/details/22490373 写一个python脚本,实现简单的http服务器功能: 1.浏览器中输入网站地...

网络编程知识(5)--用Netty实现的一个简单的HTTP服务器

本文转载自:http://akingde.iteye.com/blog/1923625 尊重原创用Netty实现的一个简单的HTTP服务器,可以处理静态文件,例子中的注释也比较全。public cla...
  • Mrzhoug
  • Mrzhoug
  • 2016年05月10日 10:54
  • 1219
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现一个简单的http服务器
举报原因:
原因补充:

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