上代码

运行完打开浏览器访问127.0.0.1:8000

#include <cstdio>
#include <string>
#include <fstream>
#include <WinSock2.h>
#include <iostream>
using namespace std;
#define BUFFER_SIZE 1024
#define HOST "127.0.0.1"
#define PORT 8000
#define HEADER "\
HTTP/1.1 200 OK\r\n\
Content-Type: text/html; charset=UTF-8\r\n\
Server: ZYhttp_v1.0.1\r\n\
Content-Length: %ld\r\n\r\n\
"
const string strPath = "1.html";
#pragma comment(lib, "WS2_32")
// 获取文件的大小
long GetFileLength(string strPath);
// 单线程函数
int main(int argc, char **argv)
{// 定义并且初始化一个服务器套接字sockaddr_in addrServer;addrServer.sin_family = AF_INET;addrServer.sin_addr.S_un.S_addr = INADDR_ANY;addrServer.sin_port = htons(PORT);// 初始化WSADATA wsaData;WORD socketVersion = MAKEWORD(2, 2);if (WSAStartup(socketVersion, &wsaData) != 0){printf("初始化失败!");exit(1);}// 创建套接字SOCKET socketServer = socket(AF_INET, SOCK_STREAM, 0);if (socketServer == SOCKET_ERROR){printf("创建失败!");exit(1);}// 绑定服务器套接字if (bind(socketServer, (LPSOCKADDR)&addrServer, sizeof(addrServer)) == SOCKET_ERROR){printf("绑定失败!");exit(1);}// 监听if (listen(socketServer, 10) ==  SOCKET_ERROR){printf("监听失败!");exit(1);}while (true){printf("Listening ... \n");sockaddr_in addrClient;int nClientAddrLen = sizeof(addrClient);//服务器端建立连接SOCKET socketClient = accept(socketServer, (sockaddr*)&addrClient, &nClientAddrLen);if (SOCKET_ERROR == socketClient){printf("接收失败!");break;}char buffer[BUFFER_SIZE];memset(buffer, 0, BUFFER_SIZE);//接收数据if (recv(socketClient, buffer, BUFFER_SIZE, 0) < 0){printf("接收数据失败!");break;}printf("接收到的数据 : \n%s", buffer);// response// send headermemset(buffer, 0, BUFFER_SIZE);sprintf(buffer, HEADER, GetFileLength(strPath));//把文件和头文件合并然后发送数据if (send(socketClient, buffer, strlen(buffer), 0) < 0){printf("发送数据失败!");break;}//读取文本ifstream fin(strPath.c_str(), ios::in | ios::binary);if (fin.is_open()){memset(buffer, 0, BUFFER_SIZE);//每次读取一个字节while (fin.read(buffer, BUFFER_SIZE - 1)){if (send(socketClient, buffer, strlen(buffer), 0) < 0){printf("发送数据失败!");break;}memset(buffer, 0, BUFFER_SIZE);}if (send(socketClient, buffer, strlen(buffer), 0) < 0){printf("发送数据失败!");break;}}fin.close();closesocket(socketClient);}closesocket(socketServer);WSACleanup();return 0;
}
long GetFileLength(string strPath)
{ifstream fin(strPath.c_str(), ios::in | ios::binary);fin.seekg(0, ios_base::end);streampos pos = fin.tellg();//返回当前文件位置long lSize = static_cast<long>(pos);fin.close();cout<<"该文件的长度:"<<lSize<<endl;return lSize;
}

计算机网络课程设计——简单Web Server程序的设计与实现相关推荐

  1. 计算机网络课程设计之简单 Web Server 程序的设计与实现

    前言 本实验是实现一个简易的webserver,我们一直在访问网站,甚至还做过Web课程设计,部署过Tomcat等等,所以说这次实验能更深入的了解其原理 白嫖容易,创作不易,本文原创,转载请注明!!! ...

  2. 计算机网络课程设计之网络聊天程序的设计与实现

    前言 计算机网络课程设计开始,要求用C/C++,而且有些题目还要有图形界面,因此决定用Qt写图形界面,同时决定用一个程序完成所有的实验设计. 白嫖容易,创作不易,本文原创,转载请注明!!! 源码和可运 ...

  3. linux搭建web服务器论文答辩开场白,基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩.ppt...

    基于ARM9嵌入式Linux系统Web Server服务器计算机设计与科学专业毕业答辩 2009-5-31 计算机科学与技术专业 2009届本科生毕业论文答辩 基于ARM9的嵌入式Linux系统的We ...

  4. java简单投票系统_JSP实现的简单Web投票程序代码

    本文实例讲述了JSP实现的简单Web投票程序.分享给大家供大家参考.具体如下: 这里使用文本文件作为数据存储的投票系统. 1. vote.java: package vote; import java ...

  5. 投票功能+代码+java_JSP实现的简单Web投票程序代码

    这篇文章主要介绍了JSP实现的简单Web投票程序代码,较为详细的分析了JSP实现投票功能的具体步骤与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了JSP实现的简单Web投票程序. ...

  6. 一个具有Spring Boot,Spring Security和Stormpath的简单Web应用程序-15分钟

    建筑物身份管理,包括身份验证和授权? 尝试Stormpath! 我们的REST API和强大的Java SDK支持可以消除您的安全风险,并且可以在几分钟内实现. 注册 ,再也不会建立auth了! 更新 ...

  7. mysql怎么创建窗口应用程序_在NetBeans中使用MySQL创建简单Web应用程序(二)

    既然数据层已经准备就绪,我们开始在适当的位置放置Java类.逻辑层由三个类组成:SubjectName.java.SubjectCounselor.java和AccessDB.java.这几个类提供两 ...

  8. 设计数据密集型应用程序_设计数据密集型应用程序书评

    设计数据密集型应用程序 Realising how little you know about something can potentially be a demoralising experien ...

  9. 别再纠结页面设计!挑选小程序页面设计模板就对了

    小程序页面设计模板可以是一个非常棒的选择,特别是如果你想要快速创建一个优秀的小程序. 以下是一些关于如何选择小程序页面设计模板的建议: 确定你的需求:在开始挑选小程序页面设计模板之前,你需要明确你的需 ...

最新文章

  1. 皮一皮:怎么才能让员工有干劲...
  2. 平切分,分库,分表,主从,集群 数据库水平切分的实现原理解析
  3. linux 股票指南针,IOS开发入门之ios指南针
  4. Spring Data JPA和分页
  5. python借助missingno可视化分析缺失值
  6. Spring : 基于tx标签的声明式事物
  7. ESFramework Demo -- 简单的网络硬盘Demo
  8. 定制Ubuntu桌面
  9. qq群临时文件转永久
  10. python将pdf转成excel_wpspdf转换成excel Python转换PPT为PDF
  11. 2022腾讯云学生服务器价格申请认证及购买攻略!
  12. matlab临界比例度发确定pi,PID控制器参数整定的MATLAB/Simulink仿真
  13. AT91SAM7SE应用 -- UART
  14. C. Mortal Kombat Tower(动态规划)Educational Codeforces Round 95 (Rated for Div. 2)
  15. 如何集成支付宝到电脑网站
  16. 什么是网络智能运维?如何保障业务7x24小时在线?
  17. PMP——第3章 项目经理的角色
  18. php简单抽奖,php 简单随机抽奖函数的简单示例
  19. Python+Pycharm的安装
  20. leetcode 825. Friends Of Appropriate Ages

热门文章

  1. MYSQL复制原理及其流程-详
  2. 什么软件可以测试吃鸡帧数,好奇实验室:内存频率影响吃鸡帧数有多大?
  3. 马斯克 440 亿美元收购 Twitter,转身炒掉 CEO、计划裁员75%!
  4. 北理计算机研究生在良乡校区吗,食在良乡——说说我在北理工的这几年
  5. mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法
  6. Vue跨域配置proxyTable问题
  7. mysql 聚合函数求乘积_手把手教你mysql(五)聚合函数
  8. 多个input文字方框中,默认字体是灰色,,输入字时,字体变成黑色
  9. android中对View的onMeasure()方法的理解
  10. ubuntu20.04+x86_64+virtualbox6.7 环境下编译xenomai内核和实时性测试[详解]