• 网络编程三


    转自: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函数

  • 相关阅读:
    android 访问SD卡的方法
    android 用Achartengine 作图
    hello
    IIS 7.0 "确认文件是否存在"功能
    test
    收藏:如何在Web页面上直接打开、编辑、创建Office文档
    JavaScript面向对象技术
    正则表达式30分钟入门教程
    JWT有状态登陆与无状态登陆
    20条JavaScript代码简洁的写法
  • 原文地址:https://www.cnblogs.com/hnrainll/p/2036991.html
Copyright © 2020-2023  润新知