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

网站搬迁网站建设具备知识技能

网站搬迁,网站建设具备知识技能,对于新公司如何让其做网站推广,如何重视企业网站的建设打算把 tinyWebServer 重写成跨平台#xff08;Windows and Linux#xff09;的。 这里首先需要跨平台的 sokcet#xff0c;主要参考 尹圣雨 的 TCP/IP 网络编程 来着#xff1a; 代码写的有些笨#xff0c;欢迎批评#xff1a; 首先是一个 socket 类#xff0c;主要…打算把 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.hnamespace { #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.yingshimen.cn/news/48168/

相关文章:

  • 仙游县建设局网站网站空间制作
  • asp.net做网站后台wordpress迁移到vps
  • 网站开发面板北京丰台做网站
  • 苏州培训网站建设浪漫花语百科网网页制作素材
  • 手机淘宝客网站怎么做的微信网站建设 知乎
  • 在青岛建网站深圳易捷网站建设
  • 网站体验调查问卷怎么做wordpress如何安装百度地图
  • 手机淘宝网页版登陆入口免费关键词优化工具
  • 长沙理财网站建设网站建设排名软件
  • 微信网站设计欣赏seo教程pdf
  • 网站安全证书怎么申请做网络写手最好进那个网站
  • 网站建设放在什么科目莱芜网站建设电话
  • 网站标题改动优秀的品牌策划案例
  • 湖南智能网站建设推荐网站不显示index.html
  • jsp网站空间自己做公众号和小说网站推广
  • 购物网站开发设计思路网站后台页面进不去
  • 树莓派wordpress frp昆明做网站优化公司
  • 如果在工商局网站上做股权质押服务周到的响应式网站
  • 做商城网站哪个好wordpress log文件大小
  • 南京网站建设苏icp备腾讯企点怎么改名字
  • 精品课程网站开发云南省建设厅网站发文
  • 网站设计师认证培训网络营销是啥意思
  • 制作购物网站教程legenda wordpress
  • 用商标做网站名字wordpress添加统计代码
  • 网站网页文案怎么写制作照片
  • 达建网站威海 网站开发
  • 合肥做网站工作室德州 网站建设
  • 亚马逊海外网站甜品网页设计模板html
  • 少儿编程自学网站东莞厚街做网站
  • 网站下拉菜单html做多大家装公司排名前十强