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

广州做网站公司电话高端响应式网站

广州做网站公司电话,高端响应式网站,建筑工程承包合同书,怎么查icp备案号目录 引言 获取套接字 绑定套接字 表明允许监听 单例模式设计 完整代码示例 个人主页#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.hkea.cn/news/14557284/

相关文章:

  • 爱做网站免费模板vip青岛网站建设小公司
  • 网站本地化怎么做深圳南山做网站的公司
  • 百度云服务器挂网站工作分析中的任职资格不包括
  • 中信建设有限责任公司官网招聘信息如何提高seo关键词排名
  • 椒江网站建设578做网站企业网站seo工作
  • 巴西网站建设创新的网站建站
  • 中华住房和城乡建设厅网站软件开发服务方案
  • 小企业网站怎么做购物网站类型
  • 男女直接做那个视频网站上海做网站优化价格
  • 介绍几个能进去的a站wordpress 优美图主题
  • 外贸大型门户网站建设wordpress注册添加算术验证码
  • wordpress换域名后网站地址怎么办网站搭建平台demo免费
  • 程序员做一个网站多少钱php免费空间
  • 小说章节收费网站建设人才引进从事网站建设
  • 浙江 外贸网站建设做网站有关机械的图片
  • html网站尺寸海淀网站建设电话
  • 建设网站公司域名用什么软件开发app
  • 郑州服装网站建设重庆九龙坡营销型网站建设公司哪家好
  • 中联建设集团股份有限公司网站做外贸翻译用哪个网站
  • 网站建设公司怎我想学做网站
  • pythone网站开发可以自己制作图片的软件
  • 怎么自己做五合一网站怎样做网商网站
  • 爱站工具包手机版cm域名做网站
  • 怎么做网站策划赣州91人才网赣州招聘信息
  • 辽宁省城乡建设网站台州网络建站模板
  • eclipse网站建设微信公众号网站开发语言
  • 怎么把统计代码加到网站wordpress怎么给栏目添加tdk
  • 桂林网站设计wordpress基本主题
  • 中国老区建设促进会网站网站制作产品优化
  • 重庆网站建设狐灵传媒游戏网站后台建设