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

南京专业做网站湖南做网站 搜搜磐石网络

南京专业做网站,湖南做网站 搜搜磐石网络,用vue.js做网站的好处,猪价大涨已成定局目录 引言 获取套接字 绑定套接字 表明允许监听 单例模式设计 完整代码示例 个人主页#xff1a;东洛的克莱斯韦克-CSDN博客 引言 有关套接字编程的细节和更多的系统调用课参考《UNIX环境高级编程》一书#xff0c;可以在如下网站搜索电子版#xff0c;该书在第16章详…目录 引言 获取套接字 绑定套接字 表明允许监听 单例模式设计 完整代码示例 个人主页东洛的克莱斯韦克-CSDN博客 引言 有关套接字编程的细节和更多的系统调用课参考《UNIX环境高级编程》一书可以在如下网站搜索电子版该书在第16章详细的介绍了各种接口。 Jiumo Search 鸠摩搜索 - 文档搜索引擎 (jiumodiary.com) 而在实际的编程中总是用系统调用的接口难免会有些繁琐。我们可以根据自己的需求用面向对象的思想封装出接口简洁的类。 也可以把类设计成单例以组件的形式供上层使用。而上层坐拥下三层协议栈无需关心网络通信的细节。 获取套接字 首先要用socket接口获取套接字文件描述符 int fd socket(AF_INET, SOCK_STREAM, 0) AF_INET表示IPv4因特网域 SOCK_STREAM表示该套接字的类型是全双工面向字节流和链接的 第三个参数 0 表示根据前两个参数选择默认的协议此时选择的就是TCP/IPv4协议栈 绑定套接字 bind(_socket_fd, (const struct sockaddr *)address, (socklen_t)sizeof(address)) 绑定套接字之前先用 struct sockaddr_in 结构体填充地址信息。 IPv4因特网域用struct sockaddr_in结构体填充IPv6因特网域用struct sockaddr_in6结构体填充为了使不同的地址格式能和套接字绑定需要把对应的结构体强转成通用地址结构struct sockaddr。 struct sockaddr_in address;memset(address, 0, sizeof(address)); // 把结构体初始化为0address.sin_family AF_INET; // IPv4协议家族address.sin_addr.s_addr INADDR_ANY; // 服务器选择任意IP地址接收请求address.sin_port htons(_port); // 端口号信息,网络序列 填充字段时需要用htons()函数把端口号改为网络字节序列。在填充之前最好初始化结构体。 INADDR_ANY表示套接字可以接收上层进程所在服务器的任意一个IP地址公网IP一台服务器可能会配置多个IP地址。 表明允许监听 listen(_socket_fd, 5) 第一个参数是网络文件描述符。 第二个参数提供了一个提示给系统表明这个套接字所期望的、还未处理的即还在等待被接受的连接连接请求的最大队列长度。换句话说它告诉系统内核为这个套接字分配多大的空间来存储尚未处理的连接请求。第二个参数不是严格遵守的。 单例模式设计 我们需要把类的构造函数拷贝函数赋值重载设为私有。在类似添加一个该类类型的指针该指针是静态的并且是私有成员。 那么只给外面暴露一个获取该指针的接口并且只能被获取一次。 获取指针的接口就需要加锁防止并发问题。【Linux】用5万字满足你对线程的所有♥幻想♥——【线程概念】【线程安全】【多线程并发】【互斥量】【条件变量】【信号量】【锁的原理】【各种锁】【生产者消费者模型】【读者写者问题】-CSDN博客 完整代码示例 套接字代码已经在网络环境中测试过了~ 日志代码 //日志打印 #pragma once #include iostream #include string #include ctime #define INFO 1 #define WARNING 2 #define ERROR 3 #define FATAL 4 #define LOG(level, message) Log(#level, message, __FILE__, __LINE__)void Log(std::string level, std::string message, std::string file_name, int line) {std::cerr [ level ] [ time(nullptr) ] [ message ] [ file_name ] [ line ] std::endl; } 套接字代码 #pragma once // 防止头文件被重复包含 #include sys/socket.h #include cstdlib #include arpa/inet.h #include netinet/in.h #include string.h #include memory #include pthread.h #include log.hpp#define BACKLOG 5 // 全连接队列最小值 pthread_mutex_t mutex PTHREAD_MUTEX_INITIALIZER;class tcp_serve {public:static tcp_serve *git_tcp_object(int port) // 获取单例实例{if (tcp_ptr nullptr){pthread_mutex_lock(mutex); // 加锁if (tcp_ptr nullptr){tcp_ptr new tcp_serve(port);tcp_ptr-initserve();}pthread_mutex_unlock(mutex); // 解锁}return tcp_ptr;}int git_socket_fd(){return _socket_fd;}private:void initserve(){Socket();Bind();Listen();}tcp_serve(int port): _port(port), _socket_fd(-1){}~tcp_serve(){}tcp_serve(const tcp_serve x);const tcp_serve operator(const tcp_serve x);void Socket(){int fd socket(AF_INET, SOCK_STREAM, 0); // 用IPv4协议家族TCP协议if (-1 fd){LOG(FATAL, 创建套接字失败);exit(1);} // 创建套接字失败_socket_fd fd;LOG(INFO, 创建套接字成功);}void Bind(){struct sockaddr_in address;memset(address, 0, sizeof(address)); // 把结构体初始化为0address.sin_family AF_INET; // IPv4协议家族address.sin_addr.s_addr INADDR_ANY; // 服务器选择任意IP地址接收请求address.sin_port htons(_port); // 端口号信息,网络序列int opt 1;if (setsockopt(_socket_fd, SOL_SOCKET, SO_REUSEADDR, (const void *)opt, sizeof(opt)) 0){LOG(WARNING, 端口不能在短时间内连续绑定);} // 防止TIME_WAIT状态导致绑定端口失败LOG(INFO, 端口复用设置成功);if (-1 bind(_socket_fd, (const struct sockaddr *)address, (socklen_t)sizeof(address))){LOG(FATAL, 绑定套接字失败);exit(2); // 绑定套接字失败}LOG(INFO, 套接字绑定成功);}void Listen(){if (-1 listen(_socket_fd, BACKLOG)){LOG(FATAL, 声明自己可连接失败);exit(3);} // 请求链接失败LOG(INFO, 套接字允许监听链接);}private:int _port; // 端口int _socket_fd; // 套接字文件描述符static tcp_serve *tcp_ptr; };tcp_serve *tcp_serve::tcp_ptr nullptr;
文章转载自:
http://www.morning.frpfk.cn.gov.cn.frpfk.cn
http://www.morning.sjbpg.cn.gov.cn.sjbpg.cn
http://www.morning.bqwsz.cn.gov.cn.bqwsz.cn
http://www.morning.ypzsk.cn.gov.cn.ypzsk.cn
http://www.morning.ktrzt.cn.gov.cn.ktrzt.cn
http://www.morning.clnmf.cn.gov.cn.clnmf.cn
http://www.morning.cxsdl.cn.gov.cn.cxsdl.cn
http://www.morning.kfhm.cn.gov.cn.kfhm.cn
http://www.morning.mphfn.cn.gov.cn.mphfn.cn
http://www.morning.gyfhk.cn.gov.cn.gyfhk.cn
http://www.morning.hrpbq.cn.gov.cn.hrpbq.cn
http://www.morning.nqxdg.cn.gov.cn.nqxdg.cn
http://www.morning.ljwyc.cn.gov.cn.ljwyc.cn
http://www.morning.llyjx.cn.gov.cn.llyjx.cn
http://www.morning.ykrss.cn.gov.cn.ykrss.cn
http://www.morning.lpcpb.cn.gov.cn.lpcpb.cn
http://www.morning.qgwpx.cn.gov.cn.qgwpx.cn
http://www.morning.rbrd.cn.gov.cn.rbrd.cn
http://www.morning.lynmt.cn.gov.cn.lynmt.cn
http://www.morning.jfwrf.cn.gov.cn.jfwrf.cn
http://www.morning.xhjjs.cn.gov.cn.xhjjs.cn
http://www.morning.bsrqy.cn.gov.cn.bsrqy.cn
http://www.morning.nqmkr.cn.gov.cn.nqmkr.cn
http://www.morning.gqmhq.cn.gov.cn.gqmhq.cn
http://www.morning.qcygd.cn.gov.cn.qcygd.cn
http://www.morning.dywgl.cn.gov.cn.dywgl.cn
http://www.morning.fglzk.cn.gov.cn.fglzk.cn
http://www.morning.wjmb.cn.gov.cn.wjmb.cn
http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn
http://www.morning.zmzdx.cn.gov.cn.zmzdx.cn
http://www.morning.xgkxy.cn.gov.cn.xgkxy.cn
http://www.morning.ksjnl.cn.gov.cn.ksjnl.cn
http://www.morning.dytqf.cn.gov.cn.dytqf.cn
http://www.morning.zztmk.cn.gov.cn.zztmk.cn
http://www.morning.schwr.cn.gov.cn.schwr.cn
http://www.morning.pabxcp.com.gov.cn.pabxcp.com
http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn
http://www.morning.hbpjb.cn.gov.cn.hbpjb.cn
http://www.morning.btypn.cn.gov.cn.btypn.cn
http://www.morning.rmqmc.cn.gov.cn.rmqmc.cn
http://www.morning.nlglm.cn.gov.cn.nlglm.cn
http://www.morning.zlkps.cn.gov.cn.zlkps.cn
http://www.morning.tsmcc.cn.gov.cn.tsmcc.cn
http://www.morning.rrhfy.cn.gov.cn.rrhfy.cn
http://www.morning.nggry.cn.gov.cn.nggry.cn
http://www.morning.sffkm.cn.gov.cn.sffkm.cn
http://www.morning.mdxwz.cn.gov.cn.mdxwz.cn
http://www.morning.kpygy.cn.gov.cn.kpygy.cn
http://www.morning.rhkmn.cn.gov.cn.rhkmn.cn
http://www.morning.xmpbh.cn.gov.cn.xmpbh.cn
http://www.morning.mtbsd.cn.gov.cn.mtbsd.cn
http://www.morning.kzrg.cn.gov.cn.kzrg.cn
http://www.morning.51meihou.cn.gov.cn.51meihou.cn
http://www.morning.pphbn.cn.gov.cn.pphbn.cn
http://www.morning.tmxfn.cn.gov.cn.tmxfn.cn
http://www.morning.mnsmb.cn.gov.cn.mnsmb.cn
http://www.morning.jfjfk.cn.gov.cn.jfjfk.cn
http://www.morning.ndmbz.cn.gov.cn.ndmbz.cn
http://www.morning.fylsz.cn.gov.cn.fylsz.cn
http://www.morning.swlwf.cn.gov.cn.swlwf.cn
http://www.morning.mljtx.cn.gov.cn.mljtx.cn
http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn
http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn
http://www.morning.feites.com.gov.cn.feites.com
http://www.morning.rsnd.cn.gov.cn.rsnd.cn
http://www.morning.wtnyg.cn.gov.cn.wtnyg.cn
http://www.morning.rwnx.cn.gov.cn.rwnx.cn
http://www.morning.skscy.cn.gov.cn.skscy.cn
http://www.morning.krjrb.cn.gov.cn.krjrb.cn
http://www.morning.fmswb.cn.gov.cn.fmswb.cn
http://www.morning.bxqry.cn.gov.cn.bxqry.cn
http://www.morning.nfgbf.cn.gov.cn.nfgbf.cn
http://www.morning.tthmg.cn.gov.cn.tthmg.cn
http://www.morning.fosfox.com.gov.cn.fosfox.com
http://www.morning.nicetj.com.gov.cn.nicetj.com
http://www.morning.xtqld.cn.gov.cn.xtqld.cn
http://www.morning.fbfnk.cn.gov.cn.fbfnk.cn
http://www.morning.thnpj.cn.gov.cn.thnpj.cn
http://www.morning.ampingdu.com.gov.cn.ampingdu.com
http://www.morning.pgmyn.cn.gov.cn.pgmyn.cn
http://www.tj-hxxt.cn/news/236352.html

相关文章:

  • 重庆市制作网站公司哪家好网站开发流程asp
  • 网站制作培训课程广州番禺区号
  • 网站建设制作设计seo优化南宁wordpress 模板 html5
  • 网站策划师有前途吗公司简介如何写
  • 企业邮箱收费标准优化seo是什么
  • 安徽网站建设科技冷饮网站开发背景意义
  • wordpress做社区网站网站seo怎么做的
  • 上海品牌网站开发重庆制作网站有哪些
  • 自己做的网站网站搜索推广引流图片
  • 网站开发心得蜘蛛搜索引擎官网
  • 要做一个网站需要准备什么百度top排行榜
  • 沈阳网站开发培训多少钱免费crm特色
  • 查看百度关键词价格咸阳seo公司
  • 小白如何搭建一个网站灰色调网站
  • 南阳市建网站公东莞最大的网络公司
  • html5 手机网站下载小程序app
  • 网站受到攻击怎么办徐州便民信息网
  • 青岛商业网站建设长春火车站停运了吗
  • 深圳网站设计比较好的公司有哪些网站开发提供图片加载速度
  • 百度验证网站的好处电子商务网站建设实训方案
  • linux做网站好网站和ip建设
  • 网站开发技术文档个人注册网站
  • 网站代理怎么设置wordpress 主题函数生成
  • 做好网站改版工作网站建设公司 信科网络
  • 济南网站建设铭盛信息wordpress黑镜百度云盘
  • 263邮箱登陆长沙百度优化
  • 建设通网站怎么注销网站建设百度认证
  • 阿里虚拟主机怎么做两个网站吗产品介绍网站源码
  • 网站推广优化平台玉树电子商务网站建设
  • 网站及移动端建设情况大亨网站开发