值—结果参数详解
来源:互联网 发布:机房网络布线方案 编辑:程序博客网 时间:2024/06/14 16:30
值-结果参数(socket编程中一到七的struct sockaddr_in的长度参数)
1.概念:当函数参数是从内核到进程时,函数被调用时参数大小是一个值,它告诉内核该参数的结构大小避免内核写操作越界,函数返回时,参数的结构大小又是一个结果,它告诉进程内核写进数据的多少,这种参数叫做值-结果参数。
2.例子:八个socket编程中涉及的函数中,总是通过指针来传递指向结构的指针。同时结构的长度也作为参数来传递,但是其传递的方法取决于结构的传递方向:是从内核到进程还是从进程到内核。详细如下:
1>.参数从进程到内核:
bind、connect,sendto从进程到内核传递参数,它明确知道要拷贝多少以及拷贝的数据。因此一般传递一个长度,例如:
structsockaddr_in addr;
memset(&inAddr,0, sizeof(inAddr));
addr.sin_addr.s_addr=inet_addr(INADDR_ANY);
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
//..........
connect(sockfd, (struct sockaddr*)&addr, sizeof(addr) );
2>.参数从内核到进程:
accept、getsockname、getpeername,recvfrom函数被调用时结构大小是一个值,它告诉内核该结构的大小避免内核写操作越界,函数返回时,结构大小又是一个结果,它告诉进程内核写进数据的多少,这种参数叫做值-结果参数。例如:
structsockaddr_in addr;
//..........
socklen_tlen = sizeof(addr);
getpeername(sockfd, (struct sockaddr*)&addr, &len );
[Remark]
sendto是从进程到内核传递参数的。
recvfrom是从内核到进程传递参数的。
1.概念:当函数参数是从内核到进程时,函数被调用时参数大小是一个值,它告诉内核该参数的结构大小避免内核写操作越界,函数返回时,参数的结构大小又是一个结果,它告诉进程内核写进数据的多少,这种参数叫做值-结果参数。
2.例子:八个socket编程中涉及的函数中,总是通过指针来传递指向结构的指针。同时结构的长度也作为参数来传递,但是其传递的方法取决于结构的传递方向:是从内核到进程还是从进程到内核。详细如下:
1>.参数从进程到内核:
bind、connect,sendto从进程到内核传递参数,它明确知道要拷贝多少以及拷贝的数据。因此一般传递一个长度,例如:
struct
memset(&inAddr,
addr.sin_addr.s_addr=inet_addr(INADDR_ANY);
addr.sin_family=AF_INET;
addr.sin_port=htons(PORT);
//..........
connect(
2>.参数从内核到进程:
accept、getsockname、getpeername,recvfrom函数被调用时结构大小是一个值,它告诉内核该结构的大小避免内核写操作越界,函数返回时,结构大小又是一个结果,它告诉进程内核写进数据的多少,这种参数叫做值-结果参数。例如:
struct
//..........
socklen_t
getpeername(
[Remark]
sendto是从进程到内核传递参数的。
recvfrom是从内核到进程传递参数的。
0 0
- 值—结果参数详解
- 值-结果参数
- 值-结果参数
- 百度搜索结果页url参数详解
- LINUX系统监视——ps命令详解以及常用参数(aux)输出结果分析
- 我对“值----结果参数”的理解
- socket套接口的 值-结果参数
- Unix Network Programming(7)---值-结果参数
- 【C语言】【unix c】值结果参数
- UNIX网络编程学习(4)--值-结果参数
- (笔记)unix套接口的值-结果参数
- 值-结果参数(socket编程中的函数举例)
- Struts2通过请求参数值指定配置的结果
- Struts2学习——1200带参数的结果集
- Android四大组件之Activity详解——传值和获取结果
- NAND Flash结果详解
- MySQL explain结果详解
- MySQLReport结果详解
- 学英语尽量不要从背词汇表开始
- 【设计模式】桥接模式
- ios--检测用户截屏, 并获取所截图片
- BUPT Summer Journey #test8 E
- 11g的延迟段功能
- 值—结果参数详解
- using namespace std
- AFNetworking2.5使用
- 在cocos2d-js-v3.0 中使用cocostudio UI的正确方式
- Windows 7下DotProject环境搭建及其安装
- 基于 OpenFlow 实现网络虚拟化
- HTML5播放器MediaElement.js用法
- 杭电1003 Max Sum
- ios不可改变NSString类和可改变NSMutableString类的使用