Unix Network Programming(7)---值-结果参数

从进程到内核

    从进程到内核传递套接字地址结构的函数有3个:bind,connect和sendto。这些函数的一个参数是指向某个套接字地址结构的指针,另一个参数是该结构的整数大小。
    既然指针和指针所指内容的大小都传递给了内核,于是内核知道到底需要从进程复制多少数据进来。

从内核到进程

    从内核到进程传递套接字结构的函数有4个:accept,recvfrom,getsockname和getpeername。这些函数其中的两个参数一个是指向表示指向某个套接字地址结构的指针和指向表示该结构大小的整数变量的指针
accept、getsockname、getpeername,函数被调用时结构大小是一个值,它告诉内核该结构的大小避免内核写操作越界,函数返回时,结构大小又是一个结果,它告诉进程内核写进数据的多少,这种参数叫做值-结果参数。例如:

struct sockaddr_in addr;

//..........

socklen_t len = sizeof(addr);

getpeername( sockfd, (struct sockaddr*)&addr, &len );

网络编程中,值-结果参数最常见的例子是所返回套接字地址结构的长度。其他的一些值-结果参数有:
* select函数中间的3个参数;
* getsockopt函数的长度参数
* 是用recvmsg函数时,msghdr结构中的msg_namelen和msg_controllen字段。
* ifconf结构中的ifc_len字段。
* sysctl函数两个长度参数中的第一个。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值