当前位置: 首页 > wzjs >正文

企业怎样做好网站建设奖券世界推广网站

企业怎样做好网站建设,奖券世界推广网站,民治网站设计圳网站建设公司,电商网站建设费用价格服务器实例 有个著名的项目&#xff0c;tiny web&#xff0c;本项目将其改到windows下&#xff0c;并使用RAII重构&#xff0c;编写过程中对于内存泄漏确实很头疼&#xff0c;还没写完&#xff0c;后面会继续更&#xff1a; #include <iostream> #include <vector&g…

服务器实例

有个著名的项目,tiny web,本项目将其改到windows下,并使用RAII重构,编写过程中对于内存泄漏确实很头疼,还没写完,后面会继续更:

#include <iostream>
#include <vector>
#include <stdexcept>
#include <string>
#include<ranges>
#include<format>
#include <stdio.h>
#include <WinSock2.h>
#include <Windows.h>
#pragma comment(lib, "WS2_32.lib")class WSAInitializer {
public:WSAInitializer() {WSADATA data;int ret = WSAStartup(MAKEWORD(2, 2), &data);if (ret != 0) {throw std::runtime_error("WSAStartup failed. Error code: " + std::to_string(ret));}}~WSAInitializer() {WSACleanup();}WSAInitializer(const WSAInitializer&) = delete;WSAInitializer& operator=(const WSAInitializer&) = delete;
};class Socket {
public:Socket() = default;Socket(int domain, int type, int protocol) {sock_ = socket(domain, type, protocol);if (sock_ == INVALID_SOCKET) {throw std::runtime_error("Socket creation failed. Error code: " + std::to_string(WSAGetLastError()));}}explicit Socket(SOCKET s) : sock_(s) {}~Socket() {if (sock_ != INVALID_SOCKET) {closesocket(sock_);}}Socket(Socket&& other) noexcept : sock_(other.sock_) {other.sock_ = INVALID_SOCKET;}Socket& operator=(Socket&& other) noexcept {if (this != &other) {closesocket(sock_);sock_ = other.sock_;other.sock_ = INVALID_SOCKET;}return *this;}SOCKET get() const { return sock_; }operator SOCKET() const { return sock_; }Socket(const Socket&) = delete;Socket& operator=(const Socket&) = delete;
private:SOCKET sock_ = INVALID_SOCKET;
};Socket startup(unsigned short* port) {Socket server_socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);int opt = 1;if (setsockopt(server_socket.get(), SOL_SOCKET, SO_REUSEADDR, reinterpret_cast<const char*>(&opt), sizeof(opt)) == SOCKET_ERROR) {throw std::runtime_error("setsockopt failed. Error code: " + std::to_string(WSAGetLastError()));}sockaddr_in server_addr = {};server_addr.sin_family = AF_INET;server_addr.sin_port = htons(*port);server_addr.sin_addr.s_addr = htonl(INADDR_ANY);if (bind(server_socket.get(), reinterpret_cast<const sockaddr*>(&server_addr), sizeof(server_addr)) == SOCKET_ERROR) {throw std::runtime_error("bind failed. Error code: " + std::to_string(WSAGetLastError()));}if (*port == 0) {sockaddr_in name;int nameLen = sizeof(name);if (getsockname(server_socket.get(), reinterpret_cast<sockaddr*>(&name), &nameLen) == SOCKET_ERROR) {throw std::runtime_error("getsockname failed. Error code: " + std::to_string(WSAGetLastError()));}*port = ntohs(name.sin_port);}if (listen(server_socket.get(), 5) == SOCKET_ERROR) {throw std::runtime_error("listen failed. Error code: " + std::to_string(WSAGetLastError()));}return server_socket;
}int get_line(SOCKET sock, std::vector<char>& buff, int size) {buff.resize(size);char c = 0;int i = 0;while (i < size - 1 && c != '\n') {int n = recv(sock, &c, 1, 0);if (n > 0) {if (c == '\r') {n = recv(sock, &c, 1, MSG_PEEK);if (n > 0 && c == '\n') {recv(sock, &c, 1, 0);} else {c = '\n';}}buff[i++] = c;} else {c = '\n';}}buff[i] = '\0';return i;
}void unimplemented(SOCKET client) {const char* response = "HTTP/1.1 501 Not Implemented\r\n""Content-Type: text/html\r\n""\r\n""<html><head><title>Not Implemented</title></head>""<body><h1>501 Not Implemented</h1></body></html>";send(client, response, strlen(response), 0);
}DWORD WINAPI accept_request(LPVOID arg) {std::unique_ptr<Socket> client_socket(static_cast<Socket*>(arg));SOCKET client = client_socket->get();std::vector<char> buff(1024);int numchars = get_line(client, buff, buff.size());// 示例:解析请求方法char method[255] = {0};int i = 0, j = 0;while (!isspace(buff[j]) && i < sizeof(method) - 1) {method[i++] = buff[j++];}// 示例:检查支持的HTTP方法if (_stricmp(method, "GET") && _stricmp(method, "POST")) {unimplemented(client);return 0;}// 示例:解析URL(简化版)std::vector<char> url(255, 0);i = 0;while (isspace(buff[j]) && j < buff.size()) j++;while (!isspace(buff[j]) && i < url.size() - 1 && j < buff.size()) {url[i++] = buff[j++];}// 示例:发送响应(实际应处理请求)const char* response = "HTTP/1.1 200 OK\r\n""Content-Type: text/html\r\n""\r\n""<html><head><title>Test</title></head>""<body><h1>Hello World</h1></body></html>";send(client, response, strlen(response), 0);return 0;
}int main() {try {WSAInitializer wsa;unsigned short port = 8880;Socket server_socket = startup(&port);std::cout << "Server started on port " << port << std::endl;while (true) {sockaddr_in client_addr;int addr_len = sizeof(client_addr);SOCKET client_sock = accept(server_socket.get(), reinterpret_cast<sockaddr*>(&client_addr), &addr_len);if (client_sock == INVALID_SOCKET) {throw std::runtime_error("accept failed. Error code: " + std::to_string(WSAGetLastError()));}Socket* client_socket = new Socket(client_sock);HANDLE hThread = CreateThread(nullptr, 0, accept_request, client_socket, 0, nullptr);if (!hThread) {delete client_socket;throw std::runtime_error("CreateThread failed. Error code: " + std::to_string(GetLastError()));}CloseHandle(hThread);}} catch (const std::exception& e) {std::cerr << "Error: " << e.what() << std::endl;return 1;}return 0;
}

文章转载自:

http://FOKDy8rP.cwyrp.cn
http://dsObg19l.cwyrp.cn
http://BlElVAjb.cwyrp.cn
http://bgS7ROuN.cwyrp.cn
http://qQWgon8d.cwyrp.cn
http://GWwJTaNx.cwyrp.cn
http://mWKOcaEy.cwyrp.cn
http://c2ngqaGQ.cwyrp.cn
http://OPst72sp.cwyrp.cn
http://sPUELBKL.cwyrp.cn
http://SfP1rZJj.cwyrp.cn
http://3NFB1bHM.cwyrp.cn
http://bQMFdyuT.cwyrp.cn
http://Q2AiLfd0.cwyrp.cn
http://DPRiZjzE.cwyrp.cn
http://J0wyyWy6.cwyrp.cn
http://1kKgKyNr.cwyrp.cn
http://mIBFUEfq.cwyrp.cn
http://Y6P6t3dU.cwyrp.cn
http://BLx4iRow.cwyrp.cn
http://4NAnHYwt.cwyrp.cn
http://8XCqlGTG.cwyrp.cn
http://QI8CZtRn.cwyrp.cn
http://DE0oHICx.cwyrp.cn
http://YB9JoXmP.cwyrp.cn
http://7YLsxnVH.cwyrp.cn
http://INcxZVyq.cwyrp.cn
http://ldrIUNNu.cwyrp.cn
http://TYXoAecm.cwyrp.cn
http://Oq4457i5.cwyrp.cn
http://www.dtcms.com/wzjs/692131.html

相关文章:

  • 为什么手机网站跳转页面上西安网站改版
  • 做网站还有钱赚吗详述网站建设的过程
  • 手机网站解析网站建设seo优化浙江
  • 做静态网站用什么软件基本网站建设
  • 湘潭简单的网站建设公司五八同城找工作
  • chatgpt网站写个网页多少钱
  • 建设银行官方招聘网站新蔡县城乡建设局网站
  • 理财网站模板免费下载北京装修公司前十强
  • 邯郸网站建设产品介绍廊坊网站群发关键词
  • 怎样看网站建设制作方为什么上不了建设银行个人网站
  • 做爰试看的网站无锡网站建设服务公司
  • 在什么文件中加入什么代码告诉搜索引擎蜘蛛网站地图的文件位置?微信外链网站开发
  • 建e网3d模型库一个空间两个网站对seo
  • 潍坊网站关键字优化公共营养师报考条件
  • 网站制作职业网页模板下载
  • 如何做销售网站网站开发专业能力
  • 上海手机网站建设电话杭州观建设计网站
  • 网站正在紧急建设中在线网站制作系统源码
  • 海南房产网站制作wordpress小鹅通
  • 做网站公违法嘛做网站要多少
  • 花都建网站公司网站开发者取色工具
  • php网站开发专业xiu主题做的网站
  • 韩国男女直接做的视频网站微商手机网站制作公司哪家好
  • 个人网站开发主要问题对互联网网站的理解
  • 网站建设需要摊销几年白银网站建设熊掌号
  • 旅游电子商务网站开发方案云和建设局网站
  • 做网站 传视频 用什么笔记本好沈阳城市建设学院网站
  • 全校网站建设与管理查看网站是用什么做的
  • 做网站公司深圳建公司网站
  • 白酒企业网站源码公司注册地址和经营地址不一致