说到 web 服务器想必大多数人首先想到的协定是 http,那么 http 之下则是 tcp,本篇文章将通过 tcp 来实现一个简单的 web 服务器。
本篇文章将侧重讲授怎么实现,对于 http 与 tcp 的概念本篇将无非多讲授。文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
一、了解 Socket 及 web 服务工作原理
既然是基于 tcp 实现 web 服务器,不少学习 C 语言的小火伴可能会很快的想到套接字 socket。socket 是一个较为抽象的通讯过程,或者说是主机与主机进行信息交互的一种抽象。socket 可以将数据流送入网络中,也能够接管数据流。文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
socket 的信息交互与本地文件信息的读取从表面特征上看相似,但其中所存在的编写繁杂度是本地 IO 不能比拟的,但却有类似点。在 win 下 socket 的交互交互步骤为:WSAStartup 进行初始化--> socket 创立套接字--> bind 绑定--> listen 监听--> connect 连接--> accept 接管要求--> send/recv 发送或接管数据--> closesocket 关闭 socket--> WSACleanup 终究关闭。文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
了解完了一个 socket 的基本步骤后咱们了解一下一个基本 web 要求的用户常规操作,操作分为:打开阅读器-->输入资源地址 ip 地址-->得到资源。当目标服务器接管到该操作发生掉要求后,咱们可以把服务器的响应流程步骤看为:取得 request 要求-->得到要求关键数据-->获取关键数据-->发送关键数据。服务器的这一步流程是在启动socket 进行监听后才能响应。通过监听得知接管到要求,使用 recv 接管要求数据,从而依据该参数得到进行资源获取,最后通过 send 将数据进行返回。文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
二、创立sokect完成监听
2.1 WSAStartup初始化文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
首先在c语言头文件中引入依赖 WinSock2.h:文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
send; 最后发送数据:文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
最后走访地址 http://127.0.0.1:8080/index.html,得到当前目录下 index.html 文件数据,并且在阅读器渲染:文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
所有代码如下:
以上就是微观生活(93wg.com)关于“C 语言实现一个简单的 web 服务器”的详细内容,希望对大家有所帮助!
39;\\0&include<WinSock2.h>
39;\\0&34;text/html&34;text/plain&34;Content-Length:&34;HTTP/1.1200OK\\r\\n&34;Content-type:text/html\\r\\n&include <sys/stat.h>使用fstat,且向已连接的通讯产生必要的信息 :文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
//获取文件描写
structstatstatbuf;
charread_buf[1024];
charlength_buf[20];
fstat,&statbuf);
itoa;
send,0);
send,0);文章源自微观生活(93wg.com)微观生活-https://93wg.com/6306.html
send;
//·数据发送
charread_buf[1024];
len=fread;
if==-1){
printf;
}
include<stdio.h>
34;text/html&34;text/plain&34;Content-Length:&34;HTTP/1.1200OK\\r\\n&34;Content-type:text/html\\r\\n&39;\\0&
评论