![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
通讯架构实战
Xiao2018428
这个作者很懒,什么都没留下…
展开
-
通讯架构实战——6-1 业务逻辑之多线程、线程池实战-1
一:学习方法 不但要学习老师编写程序的方法,风格,更要学习老师解决一个问题的思路。 编程语言、语法这种东西如果你不会,可以通过学习来解决,但是这种 解决问题的思路, 是一种只可意会难以言传的东西, 却恰恰能够决定你在开发道路上走多远的东西,搞程序开发一定要培养自己非常清晰的逻辑思维,不然,这条程序开发之路 你会走的特别艰辛; 二:多线程的提...原创 2020-03-29 21:48:52 · 211 阅读 · 0 评论 -
通讯架构实战——5-10 通讯代码精粹之收包解包实战
一:ET,LT模式深入分析及测试 LT:水平触发/低速模式,这个事件没处理完,就会被 一直触发; ET:边缘触发/告诉模式,这个事件通知只会出现一次; 普遍认为ET比LT效率高一些,但是 ET编程难度比LT大一些; ET模式下,如果没有数据可接收,则recv会返回-1 思考:为什么ET模式事件只触发一次[事件被扔到双向链表中一次,被epoll_wait取出...原创 2020-03-29 16:54:12 · 204 阅读 · 0 评论 -
通讯架构实战——5-08 通讯代码精粹之epoll函数实战2-2
一:ngx_epoll_process_events函数调用位置 上节课:epoll_create();epoll_ctl();--我们目前已经做好准备 等待迎接客户端主动发起三次握手连入; 介绍ngx_epoll_process_events(); (i)ngx_master_process_cycle() //创建子进程等一系列动作 (...原创 2020-03-29 15:11:33 · 154 阅读 · 0 评论 -
通讯架构实战——5-05 监听端口实战、epoll介绍及原理详析
https://blog.csdn.net/qq_34863439/article/details/88378902原创 2020-03-28 18:18:20 · 210 阅读 · 0 评论 -
通讯架构实战——5-03 TCP状态转换,TIME_WAIT,SO_REUSEADDR
一:TCP状态转换 同一个IP(INADDR_ANY),同一个端口SERV_PORT,只能被成功的bind()一次,若再次bind()就会失败,并且显示:Address already in use 就好像一个班级里不能有两个人叫张三; 结论:相同IP地址的相同端口,只能被bind一次;第二次bind会失败; 介绍命令netstat:显示网络相关信息 ...原创 2020-03-28 11:48:45 · 241 阅读 · 0 评论 -
通讯架构实战——5-02 TCP三次握手详析、telnet,wireshark示范
一:TCP连接的三次握手 tcp:可靠的,面向连接的协议 udp:不可靠的,无连接的协议 大家必须要懂的TCP的三次握手,只有TCP有三次握手【UDP没有】 (1.1)最大传输单元MTU MTU(Maximum Transfer Unit):最大传输单元; MTU:每个数据包包含的数据最多可以有多少个字节;1.5K左右; 你要发送1...原创 2020-03-27 19:12:13 · 252 阅读 · 0 评论 -
通讯架构实战——5-01 C-S, TCP-IP协议妙趣横生、惟妙惟肖谈
一:客户端与服务器 客户端:client,一般字母c表示 服务器:server,一般字母s表示 ,所以c/s一般就是 :客户端/服务器 客户端:就是一个程序, 服务器:也是 一个程序; (1.1)解析一个浏览器访问网页的过程 (1.2)客户端服务器角色规律总结 a)数据通讯总在两端进行,其中一端叫客户端,另一端叫服务器端; b...原创 2020-03-27 12:18:14 · 191 阅读 · 0 评论 -
通讯架构实战——4-5 信号,子进程实战,文件IO详谈-2
一:守护进程功能的实现 三章二节 (1)拦截掉SIGHUP,那么终端窗口关闭,进程就不会跟着关闭 (2)守护进程,三章七节,一运行就在后台,不会占着终端。 创建守护进程ngx_daemon(); 调用ngx_daemon()的时机: worker()子进程创建之前; ps -eo pid,ppid,sid,tty,pgrp,comm,...原创 2020-03-27 11:20:08 · 116 阅读 · 0 评论 -
通讯架构实战——4-4 信号,子进程实战,文件IO详谈-1
一:信号功能实战 signal():注册信号处理程序的函数; 商业软件中,不用signal(),而要用sigaction();二:nginx中创建worker子进程 官方nginx ,一个master进程,创建了多个worker子进程; master process ./nginx worker process (i)ngx_master_...原创 2020-03-27 11:17:28 · 127 阅读 · 0 评论 -
通讯架构实战——4-3 日志打印实战,优化main函数调用顺序
一:基础设施之日志打印实战代码 1-3万行代码,想收获多少就要付出多少,平衡 注意代码的保护,私密性 日志的重要性:供日后运行维护人员去查看、定位和解决问题; 新文件:ngx_printf.cxx以及ngx_log.cxx。 ngx_printf.cxx:放和打印格式相关的函数; ngx_log.cxx:放和日志相关的函数; ngx_log...原创 2020-03-27 11:13:46 · 132 阅读 · 0 评论 -
通讯架构实战——4-2 读配置文件、查泄漏、设置标题实战
一:基础设施之配置文件读取 (1.1)前提内容和修改 使用配置文件,使我们的服务器程序有了极大的灵活性,是我们作为服务器程序开发者,必须要首先搞定的问题; 配置文件:文本文件,里边除了注释行之外不要用中文,只在配置文件中使用字母,数字下划线 以#号开头的行作为注释行(注释行可以有中文) 我们这个框架(项目),第一个要解决的问题是读取配置文件中的配置项(...原创 2020-03-27 11:12:36 · 123 阅读 · 0 评论 -
通讯架构实战——4-1 服务器程序目录规划、makefile编写
一:信号高级认识范例 ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx' 用kill 发送 USR1信号给进程 (1)执行信号处理函数被卡住了10秒,这个时候因为流程回不到main(),所以main中的语句无法得到执行; (2)在触发SIGUSR1信号并因此sleep了10秒种期...原创 2020-03-23 22:38:34 · 182 阅读 · 0 评论 -
通讯架构实战——3-7 守护进程详解、范例演示
一:普通进程运行观察 ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx' a)进程有对应的终端,如果终端退出,那么对应的进程也就消失了;它的父进程是一个bash b)终端被占住了,你输入各种命令这个终端都没有反应;二:守护进程基本概念 守护进程 一种长期运行的进程:这种进程...原创 2020-03-23 22:35:56 · 161 阅读 · 0 评论 -
通讯架构实战——3-6 fork函数详解、范例演示
一:fork()函数简单认识 创建进程; 进程的概念:一个可执行程序,执行起来就是一个进程,再执行起来一次,它就又是一个进程(多个进程可以共享同一个可执行文件) 文雅说法:进程 定义为程序执行的一个实例; 在一个进程(程序)中,可以用fork()创建一个子进程,当该子进程创建时, 它从fork()指令的下一条(或者说从fork()的返回处)开始...原创 2020-03-23 22:30:45 · 183 阅读 · 0 评论 -
通讯架构实战——3-5 信号编程进阶、sigprocmask范例
一:信号集 一个进程,必须能够记住 这个进程 当前阻塞了哪些信号 000000000000000000000 我们需要 “信号集 ”的这么一种数据类型(结构),能够把这60多个信号都表示下(都装下)。 0000000000,0000000000,0000000000,00,0000000000,0000000000,0000000000,00 (64个二进制位)...原创 2020-03-23 19:56:06 · 115 阅读 · 0 评论 -
通讯架构实战——3-4 Unix-Linux体系结构、信号编程初步
一:Unix/Linux操作系统体系结构 类Unix操作系统体系结构分为两个状态 (1)用户态,(2)内核态 a)操作系统/内核:用来控制计算机硬件资源,提供应用程序运行的环境 我们写的程序,他要么运行在用户态,要么运行在内核态。一般来讲运行在用户态; 当程序要执行 一些特殊代码的时候,程序就可能切换到内核态,这种切换由操作系统控制,不需要人为介入;...原创 2020-03-23 19:52:58 · 138 阅读 · 0 评论 -
通讯架构实战——3-3 信号的概念、认识、处理动作
#include "pch.h"#include <iostream>#pragma warning(disable : 4996)int main(){ //一:信号的基本概念 //进程之间的常用通信手段:发送信号,kill 第二章第二节讲过; //上节课讨论过 SIGHUP //信号 :通知(事情通知),用来通知某个进程发生了某一个事情; //事情,...原创 2020-03-23 19:47:59 · 134 阅读 · 0 评论