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

怎样建外贸网站wordpress分类添加html

怎样建外贸网站,wordpress分类添加html,wordpress 导航别名,海东电子商务网站建设打算把 tinyWebServer 重写成跨平台(Windows and Linux)的。 这里首先需要跨平台的 sokcet,主要参考 尹圣雨 的 TCP/IP 网络编程 来着: 代码写的有些笨,欢迎批评: 首先是一个 socket 类,主要…

打算把 tinyWebServer 重写成跨平台(Windows and Linux)的。

这里首先需要跨平台的 sokcet,主要参考 尹圣雨 的 TCP/IP 网络编程 来着:

代码写的有些笨,欢迎批评:

首先是一个 socket 类,主要封装了 常用操作,通过宏定义分别针对 Linux 和 Windows 处理 :

#ifndef _SOCKET_H_
#define _SOCKET_H_#ifdef _WIN32
#include <winsock2.h>
#else
#include <sys/socket.h>
#include <netinet/in.h>
#include <fcntl.h>
#include <unistd.h>
#include <arpa/inet.h>
#endif#include <cstdio>
#include <cstring>
#include <cstdlib>#include <iostream>
#include <sstream>
#include <exception>
#include <stdexcept>
#include <string>#ifdef _WIN32using socklen_t = int;
#elseusing SOCKET = int; //文件描述符static constexpr int INVALID_SOCKET  = -1; static constexpr int SOCKET_ERROR = -1;
#endifclass Socket {public:Socket():Socket(PF_INET,SOCK_STREAM,IPPROTO_TCP){}Socket(int domain, int type, int protocal);Socket(SOCKET socket): m_socket(socket){}~Socket() noexcept;void bind(sockaddr *addr, socklen_t addrlen);void listen(int queueLen= 5);Socket accept(sockaddr *addr, socklen_t *addrlen);void connect(sockaddr *addr, socklen_t len);SOCKET getSocket() { return m_socket; }private:SOCKET m_socket;
};class WinSockMgr {
public:static WinSockMgr *getInstance() {static WinSockMgr instance;return &instance;}
private:WinSockMgr();~WinSockMgr() noexcept;
};#endif

这里 WinSockMgr 主要用来管理 WinSock 的一些启动销毁工作。

然后是实现,这里直接报错就抛异常:

#include "socket.h"namespace {
#ifdef _WIN32WinSockMgr* winSockMgr = WinSockMgr::getInstance();
#endif
}std::string getErrorStr(const char *str) 
{std::ostringstream errStr;errStr << str << " with errno [" << errno << "]";return errStr.str();
}Socket::Socket(int domain, int type, int protocal) try //这里的 try 纯属多此一举
{m_socket = socket(domain,type,protocal);if (INVALID_SOCKET == m_socket) {std::string errStr = getErrorStr("socket() failed!");std::cerr << errStr << std::endl;throw std::runtime_error(errStr);}
} catch(const std::runtime_error& e) {throw;
}Socket::~Socket()
{
#ifdef _WIN32if (0 != closesocket(m_socket)) {std::cerr << "closesocket() failed!" << std::endl;}
#elseclose(m_socket);
#endif
}void Socket::bind(sockaddr *addr,socklen_t len)
{if (0 != ::bind(m_socket,addr,len)) {std::string errStr = getErrorStr("bind() failed!");std::cerr << errStr << std::endl;throw std::runtime_error(errStr);}
}// queueLen = 5
void Socket::listen(int queueLen)
{// 第二个参数是 请求等待的数量if (0 != ::listen(m_socket,queueLen)) {std::string errStr = getErrorStr("listen() failed!");std::cerr << errStr << std::endl;throw std::runtime_error(errStr);}
}Socket Socket::accept(sockaddr *addr, socklen_t *addrlen)
{SOCKET socket = ::accept(m_socket,addr,addrlen);if (INVALID_SOCKET == socket) {std::string errStr = getErrorStr("accept() failed!");std::cerr << errStr << std::endl;throw std::runtime_error(errStr);}return Socket{socket};
}void Socket::connect(sockaddr *addr, socklen_t addrlen)
{if (SOCKET_ERROR == ::connect(m_socket,addr,addrlen)) {std::string errStr = getErrorStr("connect() failed!");std::cerr << errStr << std::endl;throw std::runtime_error(errStr);}
}WinSockMgr::WinSockMgr() {
#ifdef _WIN32WSADATA wsaData;int ret = WSAStartup(MAKEWORD(2,2),&wsaData);if (ret != 0) {std::string errStr = getErrorStr("WSAStartup() failed!");std::cerr << errStr << "with return: [" << ret << "]" << std::endl;throw std::runtime_error(errStr);}
#endif
}WinSockMgr::~WinSockMgr() {
#ifdef _WIN32if (0 != WSACleanup()) {std::string errStr = getErrorStr("WSACleanup() failed!");std::cerr << errStr << std::endl;}
#endif
}

代码写的不够简洁,还需要修改,但是先这样吧。

主要是简单的封装,也没啥好讲的。

http://www.yayakq.cn/news/406052/

相关文章:

  • 网站空间永久免费微信crm是什么
  • 无锡企业网站改版网站调研怎样做
  • 郑州做网站公胶州哪家公司做网站
  • 网站建设 入门知识电子商务网站的重要性
  • 网络彩票网站建设正在建设中的网站
  • 品牌网站制作建设最好的响应式网站
  • wordpress 目录 导航站无线网络设计实验报告
  • 网站开发人员的要求o2o典型代表网站
  • 怎么做网站首页关键词百度小程序怎么删除
  • 基因数据库网站开发价格如何进行在线营销
  • 电脑做网站空间wordpress会员数
  • 金华网站制作营销房间装修效果图卧室
  • 最具口碑的企业网站建设seo黑帽是什么
  • 刚做网站做多用户还是单用户asp.net 建立网站
  • 网站建设mdf企业网站建设都需要什么准备
  • 自己搭建公司网站wordpress添加形式
  • pc网站建设哪网站可以做参考文献吗
  • 建设银行公积金查询网站首页包站长ppt网站
  • 沈阳网站设计开发公司深圳网站推广哪家好
  • 网站找什么公司做西乡做网站哪家便宜
  • 首都农村医学人才培养体系建设与农村医学人才培养的研究与实践 网站南联企业网站建设
  • 古典风格网站模板html施工企业资质等级承包范围最新版
  • 做照片的ppt模板下载网站安丘市建设局网站
  • 注塑模具东莞网站建设龙岩找工作网站
  • 网站建设注意哪些问题wordpress换域名搬家图片不显示
  • 做基因表达热图的网站网站开发双语
  • 深圳外贸营销型网站建设网站建设通常用到哪些编程
  • 海外网站建设推广最好的网站建设销售技巧
  • 帮别人设计做关于图的网站网站建设在淘宝怎么分类
  • 绿色科技网站建设建筑公司简历模板