网络编程三

转自:http://blog.csdn.net/lovelirui/archive/2011/04/08/6309985.aspx

1.套接口的地址结构确保了进程与内核之间的通讯
2.套接口的地址结构中保存地址值的是二进制,inet_pton ,inet_ntop 函数用于地址的文本表达式和二进制之间的转换

3.每个协议族都有自己的地址结构 以sockaddr_开头,后面加协议族后缀,
网际协议族的地址结构sockaddr_in
4.结构不参与通讯

5.进程到内核的函数,内核到进程的函数

6.字节排序函数来由:不同系统字节排序方式不一样,大端或小端,
套接口地址结构中某些成员按网络字节序维护,所以需要转换
htons,htonl,ntohs,ntohl

7.确定主机字节序程序
用到union:共用体,共用体的几个变量公用一个内存位置,不同时间可以保存不同的值,同一时间只能存储一个成员变量的值,共用体内存空间是其成员最大的类型空间,但其成员不能为静态;

8.字节操纵函数
处理的不是字符串,而是字节;
第一组函数bzero,bcmp,bcopy----》b代表byte,入参为const的指针,表示函数不可以修改指针所指内存
第二组函数memset,memcpy,memcmp--》m表示memory,所有memXXX的函数,第三个参数为结构大小,size_t

9.点分十进制到网络二进制转换函数
1)几乎废弃的函数inet_aton,inet_addr,inet_ntoa
inet_addr 无法处理255.255.255.255,因为2^32不包括
2)inet_pton,inet_ntop
p 地址表达式 presentation ascii串,n 数值numeric 二进制
inet_pton ipv4的实现 ,用到了inet_aton函数
inet_ntop ipv4的实现

宏定义INET_ADDRSTRLEN 16,INET6_ADDRSTRLEN 46
用于保存 网络二进制地址转换为点分十进制地址,数组的大小

10.sock_ntop函数

什么是对结果静态的存储?为什么阻碍了函数的课重入与线程安全

为了ipv4与ipv6间移植

11.readn,writen,readline的实现

使用readn,writen,readline的原因:在字节流套接口(sock_stream)上读或写的时候,内核的缓冲区达到极限的时候,此时则需要再次调用read或write函数读出或输入剩余的字节

新版的readline,跟踪一下

12.issocktype函数:测试一个描述字是否某给定类型----》这种应用用于一个由另外一个程序exec执行的程序中

其实现用到了fstat函数

posted @ 2011-05-04 21:34  hnrainll  阅读(452)  评论(0编辑  收藏  举报