Winsock 编程:200行 C++ 代码搭建一个完整的web服务器

本文档展示了如何在Windows环境下使用C++和Winsock库搭建一个Web服务器。通过WSAStartup到closesocket的一系列步骤,详细解释了服务器设计过程,包括初始化、监听、接受连接和处理请求。并提供了实际效果,如加载live2D页面和个人简历网页,以及展示多线程访问的稳定性。
摘要由CSDN通过智能技术生成

1、环境

物理主机系统:macOS Catalina 10.15.4

虚拟机系统:Windows 10 专业版 x64

虚拟机软件:Parallels Desktop 15 for Mac Pro Edition, version 15.1.4 (47270)

浏览器:Edge

编程环境(IDE):Visual Studio 2019

 

2、服务器设计

  • 调用WSAStartup函数,初始化winsock。
  • 调用socket()函数创建一个Socket
  • 调用bind()函数和socket绑定
  • 调用listen()函数监听一个socket
  • 调用accept()函数接受由一个客户端发起的连接
  • 为该连接创建一个线程来处理与对应客户端有关的服务
  • 调用send()和recv()函数向客户端发送HTML消息或GIF、TXT格式的文件。
  • 客户端断开连接后,调用_endthread()函数关闭线程
  • 调用shutdown(),closesocket()函数断开与服务器的连接,关闭socket

 

3、效果展示

1. live2D页面

    先将 live2d.html(效果是可交互live2d)及其组件(js、css)放入服务器程序目录里,然后直接在浏览器访问。访问成功,网页左下角出现 live2d 动漫小人:

 

2. 进一步,完整的基于 bootstrap 的个人简历网页+live2D

    将 resume.html 及其组件放入服务器程序目录里,然后直接在浏览器访问,访问成功:

 

3. 多线访问

    多开浏览器页面同时访问服务器,均能访问成功:

 

4、C++ 代码

#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>          // For binary handle options
#include <sys\stat.h>       // For binary write()
#include <io.h>             // Needed for open(), close(), write()
#include <process.h>        // Needed for _beginthread() and _endthread()


#undef UNICODE

#define WIN32_LEAN_AND_MEAN

// Need to link with Ws2_32.lib
#pragma comment (lib, "Ws2_32.lib")
// #pragma comm
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值