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