2017年12月8日

套接字地址结构

摘要: 1. 通用套接字地址结构: 1. 通用套接字地址结构: 1.1 概念: 套接字有几种类别,都可以放进通用套接字的容器中. 意即,具体的套接字是在通用套接字的基础上细化. 1.1 概念: 1.2 结构体如下: struct sockaddr{ uint8_t sin_len; unsigned sho 阅读全文

posted @ 2017-12-08 18:49 willaty 阅读(571) 评论(0) 推荐(0) 编辑

初始化函数1

摘要: 1. 字节排序函数: 1. 字节排序函数: 1.1 大端小端: 参考其他笔记或资料,一句话:低地址低位为小端. 1.1 大端小端: 1.2 常用函数: #include <netinet.h/in.h> uint16_t htons(uint16_t va); uint32_t htonl(uint 阅读全文

posted @ 2017-12-08 18:46 willaty 阅读(282) 评论(0) 推荐(0) 编辑

初始化函数2

摘要: 1. socket函数: #include <sys/socket.h> int socket(int family, int type, int protocol); 1. socket函数: 1.1. 参数: 第一个参数指定协议族(我理解为ip族): AF_INET,AF_INET6 第二个参数 阅读全文

posted @ 2017-12-08 18:44 willaty 阅读(175) 评论(0) 推荐(0) 编辑

非阻塞IO

摘要: 非阻塞io 使用fcntl设置,先GETFL操作,取得后逻辑与,在SETFL 一般直接返回EWOULDBLOCK. 对已connect: 可能立即返回,比如在同一机器上时. 当连接成功时,描述符可写;当连接错误时,描述符既可读又可写.(tcpv2,530页) 管理缓冲区很复杂,比select+阻塞快 阅读全文

posted @ 2017-12-08 18:42 willaty 阅读(182) 评论(0) 推荐(0) 编辑

几种TCP连接终止

摘要: 在三次连接完成后,accept调用前,客户机发来RST. Berkeley实现将完全在内核中处理,不通知. 而SVR4实现将返回一个错误EPROTO,而POSIX指出应该是ECONNABORTED,后面将补充解决方法. 如果服务器进程终止,而如果客户端对于套接字和用户输入两个源,只监听其中一个,则会 阅读全文

posted @ 2017-12-08 18:01 willaty 阅读(569) 评论(0) 推荐(0) 编辑

tcp连接需要注意的问题

摘要: 当有子进程时,子进程终止时会返回SIGCHLD信号,默认忽略,此时会有僵尸进程. 处理方法: 捕获信号,并waitpid. 当慢系统调用被中断时(如信号中断),有些系统不会自动重启调用,此时系统调用可能返回一个EINTR错误.需要检测并重启系统调用.但connect函数不能重启,调用select. 阅读全文

posted @ 2017-12-08 18:00 willaty 阅读(153) 评论(0) 推荐(0) 编辑

IO模型与select,poll,epoll

摘要: 五种:阻塞,非阻塞,IO复印,信号驱动,异步. 五种:阻塞,非阻塞,IO复印,信号驱动,异步. select,poll,epoll select: 典型用32个32位的整数表示1024个描述符,并发的局限. poll:功能同上,但数据结构不一样(链表),描述符不限制,只支持水平触发. epoll:数 阅读全文

posted @ 2017-12-08 17:59 willaty 阅读(179) 评论(0) 推荐(0) 编辑

为什么需要三次握手

摘要: 三次握手基础: tcp三次握手是同步双方序列号和窗口大小的过程. 三次握手基础: 三次的原因: 一次肯定不行,C不知道是否连接成功,发送数据则错误. 两次的话存在一个问题: 已过期的连接包再现,S会回复确认并以为连接成功. 三次的话,过期的包,由于C并未发起连接,C就不会回复. `总结: 防止已失效 阅读全文

posted @ 2017-12-08 17:51 willaty 阅读(452) 评论(0) 推荐(0) 编辑

最小重组缓冲区和路径MTU发现

摘要: 概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 疑惑: 疑惑: 1. 最 阅读全文

posted @ 2017-12-08 17:50 willaty 阅读(1415) 评论(0) 推荐(0) 编辑

TIME_WAIT状态的作用

摘要: TIME_WAIT状态: 主动关闭的那端最后经历的状态,一般为2MSL秒(1~4分钟). TIME_WAIT状态: 两个原因: 保证当最后一个ack丢失后,能收到对端重传的fin包. 保证ack包消失,不会影响下一个连接. 关于原因2: 重传时间一般为几百毫秒,而延时的数量级可能为几十秒(MSL数量 阅读全文

posted @ 2017-12-08 17:49 willaty 阅读(906) 评论(0) 推荐(0) 编辑

ftp指令集

摘要: 想进行ftp相关编程,得了解ftp的指令集. 可参考:http://blog.csdn.net/weiyuefei/article/details/51758288 ftp的命令和指令集不同: 命令是面向用户的,控制台输入的. 指令集是应用层的协议内容. ps: ftp使用ls,传输文件命令都会另开 阅读全文

posted @ 2017-12-08 17:47 willaty 阅读(213) 评论(0) 推荐(0) 编辑

git协议

摘要: 常用三种协议:ssh, git, http 常用三种协议:ssh, git, http ssh协议: 使用ssh传输,安全,可授权,需要用ssh登录,一般使用添加秘钥的方式。搭建方便。 ssh协议: 使用ssh传输,安全,可授权,需要用ssh登录,一般使用添加秘钥的方式。搭建方便。 git协议: 使 阅读全文

posted @ 2017-12-08 17:44 willaty 阅读(326) 评论(0) 推荐(0) 编辑

条款3:尽可能地使用const

摘要: 原因: 1. 利于编译器优化,比如QT中的隐式数据共享,也利于编译器检查约束。 2. 避免if a*b = c等意外行为。 阅读全文

posted @ 2017-12-08 17:10 willaty 阅读(121) 评论(0) 推荐(0) 编辑

条款4:确定对象使用前被初始化

摘要: 包括内置类型,对象。 但问题是不同编译单元之间的初始化。 指全局对象,如static等。 不可能确定其初始化顺序。 可以用单例,如在函数里返回函数static成员的引用。 只在第一次调用时初始化。 注意:多线程调用,最好在启动时一起初始化。调用时内部加锁,这是一种方案。 总结:手工初始内置类型。构造 阅读全文

posted @ 2017-12-08 17:10 willaty 阅读(156) 评论(0) 推荐(0) 编辑

条款2:尽量以const, enum, inline替换#define

摘要: 原因: 1. 追踪困难,由于在编译期已经替换,在记号表中没有。 2. 由于编译期多处替换,可能导致目标代码体积稍大。 3. define没有作用域,如在类中定义一个常量不行。 做法: 可以用const发挥常量的作用。 enum也可:取enum定义的变量地址不合法,取宏也是;而取const变量则合法。 阅读全文

posted @ 2017-12-08 17:06 willaty 阅读(171) 评论(0) 推荐(0) 编辑

条款1:视C++为一个语言联邦

摘要: C++是门多范式语言,至少包括面向过程,面向对象,泛型,函数式,元变成等。 但谨记,不要随意混合使用各种特性,为自己制定使用原则,针对不同项目、业务。 如: 类C风格编程:没有模板,没有异常,没有重载等。 面向对象:封装,继承,多态等。 模板编程:一般用于底层库的编写,大量使用模板。 STL:有自己 阅读全文

posted @ 2017-12-08 17:05 willaty 阅读(163) 评论(0) 推荐(0) 编辑

关于元表,self,元方法__index

摘要: 这是需要仔细分辨的几个概念. 这是需要仔细分辨的几个概念. 元表:相当于table的隐藏属性. 只有固定的一些方法,如__index,__tostring,__add等,称为元方法. 虽然是固定的,但是任何table都可以作为任何值的元表,实际只会赋值对应的值. 元表:相当于table的隐藏属性. 阅读全文

posted @ 2017-12-08 16:36 willaty 阅读(134) 评论(0) 推荐(0) 编辑

格式化异常

摘要: Fundamental 一切来源于:sys.exc_info 返回一个元组->三个对象,异常类型,异常值,tb对象->tb对象包含位置信息。 Fundamental 一切来源于:sys.exc_info 返回一个元组->三个对象,异常类型,异常值,tb对象->tb对象包含位置信息。 def func 阅读全文

posted @ 2017-12-08 16:26 willaty 阅读(230) 评论(0) 推荐(0) 编辑

Requests发送/上传多个文件

摘要: 第三方库,似乎在Ubuntu已经安装,centos未安装。 1、需要的环境 Python2.X Requests 库 2、单字段发送单个文件 在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下: 第三方库,似乎在Ubuntu已经安装,ce 阅读全文

posted @ 2017-12-08 16:23 willaty 阅读(2531) 评论(0) 推荐(0) 编辑

request模块

摘要: 高级用法,文件流发送:http://docs.python-requests.org/zh_CN/latest/user/advanced.html#advanced 高级用法,文件流发送:http://docs.python-requests.org/zh_CN/latest/user/advan 阅读全文

posted @ 2017-12-08 16:07 willaty 阅读(91) 评论(0) 推荐(0) 编辑

导航