unix 网络编程 第三章

包裹函数 就是对有错误返回值的函数的封装。在unix网络编程中用大写表示。

 

err_sys  必须要errno 的值才能输出错误?

 

线程函数遇到错误的时候 不设置errno的值,而是把error的值作为函数的返回值。

 

必须检查某个确定的错误,并处理它,而不是终止进程运行。

 

Unix errno 值 : 每当一个unxi函数中发生错误的时候,全局变量将被设置成一个指示消息类型的正数,函数本身通常返回-1

。err_sysy 检查errno 变量 并输出其相应的出错信息。值0 表示无错误。errno的值 只在函数发生错误的时候设置。如果函数

不返回错误。errno的值就无法确定。具有以E打头的全大写字母名称。把errno存放全局变量,不适合共享全局变量的多线程。

 

地址转换函数 就是把地址的文本表达转化成套接口地址结构中的二进制。如 inet_addr、inet_ntoa.转化函数是协议相关的。一个较好的技术是把套接口地址

结构作为不透明对象来操作。做到与协议无关。

 

网络字节序 和主机字节序。TCP在套接口地址结构中总是以网络字节序来存储。

 

套接口地址总是通过指针来传递,通过指针来取得此参数的套接口函数必须 处理所支持的任何协议族的套接口地址结构。

 

遇到的问题:如何声明指针类型: ANSI C 中有简单的解决办法,通过指针类型void*。 但是套接口函数实在ANSI C 之前定义的,所以

定义了一个通用的套接口地址函数。

 

所以  在一些套接口函数中要做类型转换。

如: int bind( int,struct sockaddr* ,socklen_t ) socklen_t   是无符号32位整形类型。

 

套接口地址分为 四种: ipv4(固定长度)  ipv6(固定长度)  unix域(可变长度)、 数据链路结构(可变长度)。

 

套接口地址传递方式 取决于传递方向: 是从进程传递给内核,还是从内核传递给进程。

 

问题:为什么从内核到进程传递套接口函数的时候,参数是指针,而不用整数?

 

因为是值——结果参数。结构的大小,是为了防止越界。

 

套接口函数 与 内存中的协议栈接口。

 

字节排序函数:

 

16位整数 , 由2个字节组成,低序字节存储在起始地址,称为小端字节序。高序字节存储在起始地址,称为大端字节序。

 

因为小端字节序 和大端字节序的格式 都有系统使用,把某给定系统所使用的字节序 称为主机字节序。

 

判断主机字节序的程序。

 

字节序转换函数。

 

htons   s看成16位端口号、 l 看成32位 ip 地址。 

 

 

 

 

 

 

 

 

 

 

 

主要看基本socket连接。

 

 

 

 

 

 

 

 

 

 

 

 

会什么要求转研发:

 

unix网络编程、(2个月)配置文件读取。内存分配、tcp、ip互联网连接。(2个月)设计模式。(1个月)工作中遇到的问题。服务器架构。

 

 

 

判断服务器性能、稳定的条件。汇编。

 

加密、解密算法。压缩、解压缩算法。UML。

 

 

对一些东西的要求是理解原理、知道应用。

 

压缩、解压缩、 服务器同步负载。

你可能感兴趣的:(设计模式,编程,压缩,网络,unix,服务器,解压缩)