基于C语言实现的web服务器

张开发
2026/4/17 20:31:07 15 分钟阅读

分享文章

基于C语言实现的web服务器
♻️ 资源大小2.84MB➡️资源下载https://download.csdn.net/download/s1t16/87425402一、实验目的及任务1、熟悉并掌握WireShark的基本操作了解网络协议实体间的交互以及报文交换。2、通过对WireShark抓包实例进行分析进一步加深对HTTP网络协议的理解。3、编写一个简单的Web服务器实现作业23项所要求的功能。4、培养理论联系实践的科学研究精神。二、实验环境1、系统环境Windows 10 家庭中文版 16072、浏览器Chrome3、WireSharkVersion 2.2.14、IDEVisual Studio 2015 Update 35、编程语言C三、实验原理1、利用Wireshark软件抓取本地PC的数据包观察其主要使用的网络协议。2、根据所获数据包的内容分析相关协议从而加深对HTTP网络协议的理解。3、利用Winsock实现本地Web服务器并实现与浏览器的交互。四、实验步骤1、实验前的准备工作1关闭所有可能会请求网络的文件以及程序。2打开浏览器删除所有的Cookie、临时文件、表单数据以及浏览记录等等。3单击开始打开运行输入cmd输入命令ipconfig/flushdns回车即可看到成功刷新DNS缓存的显示。2、WireShark的使用1启动WireShark。2启动PC上的Chrome浏览器。3开始分组捕获选择“抓包”下拉菜单中的“抓包参数选择”命令在“WireShark:抓包选项”窗口中可以设置分组捕获的选项。4在这次实验中使用窗口中显示的默认值。选择“抓包”下拉菜单中的“网络接口”命令显示计算机中所安装的网络接口即网卡。我们需要选择电脑真实的网卡点击后显示本机的IP地址。5随后点击“开始”则进行分组捕获所有由选定网卡发送和接收的分组都将被捕获。6待捕获一段时间关闭浏览器选择主窗口中有的“stop”按钮可以停止分组的捕获。7选择“文件”下拉菜单中的“另存为”保存到我的文档中。3、编写Web服务器1建立.cpp文件引用头文件winsock2.h利用SOCKET创建套接字bind绑定端口listen监听请求accept接受请求接受请求后用thread实现多线程实现多用户并发访问出现一个请求就创建一个线程返回请求。2编写一个简单html网页包含文本图片等元素放在Web服务器文件夹下。3运行Web服务器开始监听客户请求。4客户在Chrome中输入http://127.0.0.1:81/index.html获取网页及各种文本图片等资源之后显示。五、实验结果展示与分析1、HTTP协议分析在获得了要请求网页所在主机的IP后本地PC将作为客户机向服务器发起TCP连接请求连接请求建立成功后客户机即可向服务器返回确认这就是俗称的“三次握手”过程。该图片上标号为24,26,27和25,28,29分别为一个三次握手过程源端口号分别为27438和27439目的端口均为80。以第二个连接为例第25个为客户机向服务器发起请求第28帧为服务器作出确认和响应第29个为客户机向服务器服务器返回确认。第30个则为一个HTTP请求其请求报文如下图所示划红线标记的那一行为请求行是后继的行为首部行。HTTP使用传输层协议是TCP方法字段大多数为GET如下图还显示了接受的文件类型text/html,application/xhtmlxml,application/xml;q0.9,image/webp,/;q0.8接受语言为中文浏览器类型User-Agent以及使用持久连接Connection: keep-alive\r\n。服务器的响应报文如下图所示划红线标记上的那一行为初始状态行接下来的六行为首部行。客户机通过分析html文件继续向服务器发起连接并且可能携带CookieID信息。2、Web服务器实现可以通过浏览器访问本地服务器上的网页。网页文件及其中的文本图片等资源放在Web服务器目录下名为www。网页中已包含.jpg.bmp.png.gif等图片格式网页样式如图。|打开Web服务器.exe开始监听在浏览器输入http://127.0.0.1:81/index.html可以获得响应。服务器为win32控制台程序记录响应请求如下请求较多节选||

更多文章