3.1. Introduction 概述

3.2. Socket Address Structures 套接口地址结构

3.3. Value-Result Arguments 值-结果参数

struct sockaddr_un cli; // Unix domainsocklen_t len;len = sizeof(cli);  // len is a valuegetpeername(unixfd, (SA *)&cli, &len);  // len may have changed

为何将结构大小由整数改为指向整数的指针呢?这是因为当函数被调用时,结构大小是一个值(此值告诉内核该结构的大小,使内核在写此结构时不至于越界),当函数返回时,结构大小又是一结果(它告诉进程内核在此结构中确切存储了多少信息),这种参数类型叫做(Value-Result Arguments)值-结果参数

3.4. Byte Ordering Functions 字节排序函数

小端(little-endian)字节序: 低序字节存储在起始位置
大端(big-endian)字节序: 高序字节存储在起始位置数

3.5. Byte Manipulation Functions 字节操纵函数

源自Berkeley

#include <strings.h>void bzero(void * dest, size_t nbytes);void bcopy(const void * src, void * dest, size_t nbytes);int bcmp(const void * ptr1, const void * ptr2, size_t nbytes); // 返回: 0-相等, 非0-不相等

源自ANSI C函数

#include <string.h>void * memset(void * dest, int c, size_t len);void * memcpy(void * dest, const void * src, size_t nbytes);int memcmp(const void * ptr1, const void * ptr2, size_t nbytes); // 返回: 0-相同, >0或<0不相同

3.6. inet_aton, inet_ntoa, inet_addr 函数

ASCII字符串与网络字节序二进制值间转换地址

#include <arpa/inet.h>int inet_aton(const char * strptr, struct in_addr * addrptr); // 返回: 1-串有效, 0-串有错char * inet_ntoa(struct in_addr inaddr); // 返回: 指向点分十进制数串的指针in_addr_t inet_addr(const char * strptr); // 返回: 若成功,返回32位二进制的网络字节序地址; 若有错, 则返回INADDR_NONE

3.7. inet_pton和inet_ntop函数

字母p和n分别代表presentation和numeric。地址的表达(presentation)格式通常是ASCII串,数值(numeric)格式则是存在于套接口地址结构中的二进制值。

#include <arpa/inet.h>int inet_pton(int family, const char * strptr, void * addrptr); // 返回: 1-成功, 0-输入不是有效的表达格式, -1 - 出错const char * inet_ntop(int family, const void * addrptr, char * strptr, size_t len); // 返回: 指向结果的指针--成功, NULL - 出错

3.8. sock_ntop和相关函数

3.9. readn, writen, readline函数

#include "unp.h"ssize_t readn(int filedes, void * buff, size_t nbytes); // 返回: 读写字节数, -1 - 出错ssize_t writen(int filedes, const void * buff, size_t nbytes); // 返回: 读写字节数, -1 - 出错ssize_t readline(int filedes, void * buff, size_t maxlen); // 返回: 读写字节数, -1 - 出错

3.10. isfdtype函数

#include <sys/stat.h>int isfdtype(int fd, int fdtype); // 返回: 1-是指定类型, 0-不是指定类型, -1 -出错

转载于:https://www.cnblogs.com/s7vens/archive/2011/12/16/2290302.html

UNP Chapter 3 - 套接口编程简介相关推荐

  1. 第8章 基本UDP套接口编程

    TCP: 面向连接的,提供可靠的字节流. UDP: 无连接,不可靠的数据报协议. UDP: DNS 域名系统, NFS 网络文件系统, SNMP 简单网络管理协议. #include <sys/ ...

  2. UNP Chapter 25 - 原始套接口

    25.1. 概述 原始套接口提供以下三种TCP及UDP套接口一般不提供的功能. 1. 使用原始套接口可以读写ICMPv4,IGMPv4,ICMPv6分组.例如:Ping程序,就使用原始套接口发送ICM ...

  3. 套接字(socket)编程简介

    套接字(socket)编程简介 现在的网络编程几乎都是用的socket. 我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用 ...

  4. UNIX网络编程读书笔记:套接口选项

    概述 有很多方法来获取和设置影响套接口的选项: getsockopt和setsockopt函数 fcntl函数 ioctl函数 getsockopt和setsockopt函数 这两个函数仅用于套接口. ...

  5. UNIX网络编程---套接字编程简介(三)

    UNIX网络编程---套接字编程简介 一.概述 从这里开始正式开始网络编程之旅,所有的函数都是基本的库函数.这些都是网络编程的基础.Come on!!!! 二.套接字地址结构 大多数套接字函数都需要一 ...

  6. 《UNIX网络编程》读书笔记——第三章 套接字编程简介

    第三章   套接字编程简介 一.套接字地址结构 以socket_in命名,定义在<netinet/in.h>头文件中. struct in_addr{ in_addr_t s_addr:} ...

  7. 网络编程学习笔记(套接口超时)

    有三种方法给套接口上的I/O操作设置 超时: 1.调用 alarm,在到达指定时间 时产生 SIGALRM信号,可能与进程中其他已有的alarm调用 冲突 2.使用select阻塞在等待I/O上,se ...

  8. 网络编程学习笔记(TCP套接口选项)

    其套接口级别为IPPROTO_TCP TCP_KEEPALIVE: 指定TCP开始发送保持存活探测分节前以秒为单位的连接空闲时间.此选项在SO_KEEPALIVE套接口选项打开时才有效 TCP_MAX ...

  9. 网络编程学习笔记(ICMPv6和IPv6套接口选项)

    ICMPv6套接口选项级别为IPPROTO_ICMPV6 ICMP6_FILTER: 获取和设置一个icmp6_filter结构,这指明256个可能的ICMPv6消息类型中哪一个传递给在原始套接口上的 ...

  10. 网络编程学习笔记(IPv4套接口选项)

    这些选项级别为IPPROTO_IP IP_HDRINCL: 如果此选项给一个原始IP套接口,必须为所有发判定以此原始套接口上的数据报构造自己的IP头部.一般情况下,内核为发送到原始套接口上的数据报构造 ...

最新文章

  1. SLA 99.99%以上!饿了么实时计算平台3年演进历程
  2. 实习面试问题整理(一)
  3. 力扣 比较退格的字符串
  4. 如何系统的自学python-应该怎样系统的学习Python标准库?
  5. linux配置erp访问端口_nginx配置相同端口号访问多个项目
  6. Hibernate 继承映射可能会遇到的错误
  7. 利用C++求坐标系中两点间距离
  8. JAVA 16方格排序游戏
  9. AngelScript -- C++程序最好的脚本语言
  10. 揭秘:传统pos机手续费为什么比无卡支付手续费还贵!
  11. 0.96寸OLED显示屏标准库移植HAL库(模拟IIC) - 基于STM32
  12. DCloud 5+应用之plus.runtime.install无响应
  13. R语言机器学习之caret包详解(一)
  14. 1秒消失 alert jquery_jquery 弹窗信息显示几秒后自动消失
  15. VGG16全卷积网络 以VGG代码为例
  16. 基于FPGA的任意信号发生器
  17. SpringCloud-Hystrix 更换 http2.0 报 could not acquire a semaphore for execution
  18. JS红宝书·读书笔记
  19. 【Java】关于编程环境
  20. (八)活动目录:域控DC和DNS分离搭建过程

热门文章

  1. 由大脑工作原理,探讨向菩萨求聪明的灵验的科学原理
  2. 是否可以从头来过——时间旅行为什么不可能
  3. css渐变颜色php,CSS3中的颜色值RGBA以及渐变色的具体详解(图)
  4. C# 启动EXE 关闭EXE ProcessStartInfo
  5. c++ new操作符(new operator)、operator new、placement new 、operator new[] 及相对应的delete 操作符、operator delete
  6. Windows平台下c++ 内存泄漏检查的办法(如VLD)
  7. axis1 c# 接口 调用_C#图形编程GDI+基础
  8. 狂打气球html5游戏_4399h5游戏_企业团建活动小游戏:合力吹气球
  9. mysql为什么limit没用,MySQL是否可以使用LIMIT语法进行子查询?如果没有,为什么?...
  10. gdb调试Python进程