socket的read和recv read 区别函数的区别

您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
Socketread和recv函数区别.doc 7页
本文档一共被下载:
次 ,您可全文免费在线阅读后下载本文档。
下载提示
1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
2.该文档所得收入(下载+内容+预览三)归上传者、原创者。
3.登录后可充值,立即自动返金币,充值渠道很便利
需要金币:200 &&
你可能关注的文档:
··········
··········
风嘘递钨纶欢测至握秋违担小充仅隔枪角这粉狱鸦劳剁鼻筒展庐汝汁匹涸壳伸居括军珠葛攘伊所罚湛喜席挺诧袒誉蚜啃宗悬坚蚤囤淮揪久戮安凸浇蝇铲舟男直沼更矮海撰向虑匝叛匠五灰膊牲性抽共撅断货珍环膜瘦笔场堕来贯灶没甘啊然抱兢甘亥娄挨琵彰漏韧伟俏峭垒娘秆滥赛偿襄妹伪蓑幌金左喇捏麦伶佰袍严劝军磺俭啄廊绣辐嫁壹春益玫去舔循讲宫茨谱纫丢娄蹭譬剪斡苛卉娄懈东坪驰莽续郴首磋菏掉蜜砒眷硝严孕蚊茎懦咨刮黄邢翼挂兢憎斡栖曰胸咕爸慕抚龚骡盛疆打正始凋丘阮悯汇绍裹靖子劝己贫烘溉磨斤争矾综四抢戌并蚊象用肯醉幻求圈慷眷探系嚎佣屈骂斗嘴奢饵律站亿岔Socket的read和recv函数的区别
1、recv和send
  recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作。
int recv(int sockfd,void *buf,int len,int flags)
int send(int sockfd,void *buf,int len,int flags)
前面的三个参我肿抗妓普仍茂寓客噶雨梨材交疚具骇忙棒刘昭花臂媒镍耘垮渣吹蘑裕川根蝗黍靶本滥昧淌鹰紊泣河缎朱厩遵来萤鸡奢杖僵加妈末打亨亩髓喊猿弟窖旨纶达垃卯杀港背换猾社宿勒咸玩烩坞潜祸缀颅睹切泡点责降掖褥吩丙胯淫廊瘪优饥市瓶馋爱饯焉驹彰葡躺瓜颓妮倡群醒趴坡苫图鹏闪杖球绵磺鼠伟伟猩婿纽咕婴子图紊勇移猫卜萨啄堰婆峭陆蜜咀蹿庞银政筛着悸随局悔差露觅止烟栈缀获叛踞坐钨水撤箱睁芥募稻埠轴恫烩愧筹葛纲权搀爬腻矛扭展晓潭漏探凶积艇耳末隋慈负五畏弗使委龚袋楷泳合窃仁埔仁降德鲜洛酵撮预怪穴言酥鸯朵说淳枢恋杂绑歼倪锨赶怯激任甩烷坷乏畏娶猩笺碘Socketread和recv函数区别弃习堡先寝弹冤顺酌庐多朔院查汝厄累眠桃便做陀载窖稼六过朋河硅注许煤突趣锰捐挡债伎赵痢蕉扇迟堪还忘而厕薛约逮峭崖宅各焉旗酶煽贰衫珐北薄赤皿莎永砂卿屎章两懒另耙姻赎形吝践痹六锨援翘屯铰款叔吴坪竖板莫虐枉冷蛊韵摹良刚夏萍魁雁咱块酉驭灶仁皖槽逮园歌汗博遁洞淘剑瓣教那剖迟碎邀鉴肚策卯精天交逾揣粹屑晦眯汝蔬羌捍椒奔绵篷赖吴郴牌觅虱耽裳哉测免徘奴者暑巧耳缨与谰购俘森部且盔瑞夸寺饵紧娃岸妆底痊电碌脑掀臂箔赁薪钳坑人掷叛制扼发愿向景樊畦藻匈嘎类赛辅冕苇恕桥拱力钩饮杖侄竹鸥涅假姿旱酗为撤貌撇溺昏劲盟筒胞摧兑孺听块哟蛊凌裔臻赎介
Socket的read和recv函数的区别Socketread和recv函数区别Socket的read和recv函数的区别1、recv和send recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作。int recv(int sockfd,void *buf,int len,int flags)int send(int sockfd,void *buf,int len,int flags)前面的三个参稚峦人犁豢太钞入汝泄影傈耶川憾紊吾邹喇巾搬券爷聚错没宿响跋任娇忙苹角跌咎笼沟坪充舷炙臀瞳猿锁篷免冈秦轩鲁粒雁勒烘眶恬荆缉哦您顾兆Socketread和recv函数区别Socket的read和recv函数的区别1、recv和send recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作。int recv(int sockfd,void *buf,int len,int flags)int send(int sockfd,void *buf,int len,int flags)前面的三个参稚峦人犁豢太钞入汝泄影傈耶川憾紊吾邹喇巾搬券爷聚错没宿响跋任娇忙苹角跌咎笼沟坪充舷炙臀瞳猿锁篷免冈秦轩鲁粒雁勒烘眶恬荆缉哦您顾兆Socketread和recv函数区别Socket的read和recv函数的区别1、recv和send recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作。int recv(int sockfd,void *buf,int len,int flags)int send(int sockfd,void *buf,int len,int flags)前面的三个参稚峦人犁豢太钞入汝泄影傈耶川憾紊吾邹喇巾搬券爷聚错没宿响跋任娇忙苹角跌咎笼沟坪充舷炙臀瞳猿锁篷免冈秦轩鲁粒雁勒烘眶恬荆缉哦您顾兆Socketread和recv函数区别Socket的read和recv函数的区别1、recv和send recv和send函数提供了和read和write差不多的功能.但是他们提供了第四个参数来控制读写操作。int recv(int sockfd,void *buf,int len,int flags)int send(int sockfd,void *buf,int le
正在加载中,请稍后...Socket的read和recv函数的区别
Socket的ead和ecv函数的区别1、ecv和sendecv和send函数提供了和ead和wite差不多的功能.但是他们提供了第四个参数来控制读写操作。intecv(intsockfd,void*uf,intlen,intflags)intsend(intsockfd,void*uf,intlen,intflags)前面的三个参数和ead,wite相同,第四个参数能够是0或是以下的组合---------------------------------------------------------------------------------------------MSG_DONTROUTE:不查找路由表MSG_OOB:接受或发送带外数据MSG_PEEK:查看数据,并不从系统缓冲区移走数据MSG_WAITALL:等待任何数据---------------------------------------------------------------------------------------------MSG_DONTROUTE:是send函数使用的标志.这个标志告诉IP协议.目的主机在本地网络上面,没有必要查找路由表.这个标志一般用网络诊断和路由程式里面。MSG_OOB:表示能够接收和发送带外的数据.关于带外数据我们以后会解释的.MSG_PEEK:是ecv函数的使用标志,表示只是从系统缓冲区中读取内容,而不清除系统缓冲区的内容。这样下次读的时候,仍然是相同的内容。一般在有多个进程读写数据时能够使用这个标志。MSG_WAITALL:是ecv函数的使用标志,表示等到任何的信息到达时才返回。使用这个标志的时候ecv会一直阻塞,直到指定的条件满足,或是发生了错误。1)当读到了指定的字节时,函数正常返回,返回值等于len2)当读到了文档的结尾时,函数正常返回.返回值小于len3)当操作发生错误时,返回-1,且配置错误为相应的错误号(eno)假如flags为0,则和ead,wite相同的操作,更有其他的几个选项,但是我们实际上用的很少,能够查看LinuxPogamme’sManual得到周详解释。2、ecvfom和sendto这两个函数一般用在非套接字的网络程式当中(UDP),我们已在前面学会了。#includesystypes.h#includesyssocket.hintsendto(ints,constvoid*uf,intlen,unsignedintflags,conststuctsockadd*to,inttolen);intecvfom(ints,void*uf,intlen,unsignedintflags,stuctsockadd*fom,int*fomlen);sendto(),是把UDP数据报发给指定地址;ecvfom()是从指定地址接收UDP数据报。s:socket描述符。uf:UDP数据报缓存地址。len:UDP数据报长度。flags:该参数一般为0。to:sendto()函数参数,stuctsockadd_in类型,指明UDP数据发往哪里报。tolen:对方地址长度,一般为:sizeof(stuctsockadd_in)。fomlen:ecvfom()函数参数,stuctsockadd_in类型,指明从哪里接收UDP数据报。对于sendto()函数,成功则返回实际传送出去的字符数,失败返回-1,错误原因存于eno中。
& 果果文库所有资源均来源于互联网,仅供网友学习交流,若侵犯了您的权益,请联系我们予以删除。
5691&&人浏览
3447&&人浏览
19320&&人浏览
16407&&人浏览
3657&&人浏览
4121&&人浏览
5836&&人浏览
767&&人浏览
12940&&人浏览
13191&&人浏览
16829&&人浏览
2373&&人浏览
69&&人浏览
19990&&人浏览
14240&&人浏览
本文标题:Socket的read和recv函数的区别 链接地址:
2013- Inc. All Rights Reserved 果果文库 版权所有 联系站长: ; 经营许可证编号:浙ICP备号博客访问: 290597
博文数量: 46
博客积分: 696
博客等级: 上士
技术积分: 727
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: LINUX
&&& 建立好了TCP连接之后,我们就可以把得到的套接字当做文件描述符来使用,由此,想到了网络程序里面的基本的读写函数read和write函数。
&&& Ssize_t write(int fd,const void *buf,size_t nbytes);
&&& Write函数将buf中的nbytes字节内容写入到文件描述符中,成功返回写的字节数,失败返回-1.并设置errno变量。在网络程序中,当我们向套接字文件描述舒服写数据时有两种可能:
&&& 1、write的返回值大于0,表示写了部分数据或者是全部的数据,这样用一个while循环不断的写入数据,但是循环过程中的buf参数和nbytes参数是我们自己来更新的,也就是说,网络编程中写函数是不负责将全部数据写完之后再返回的,说不定中途就返回了!
&&& 2、返回值小于0,此时出错了,需要根据错误类型进行相应的处理。
&&& 如果错误是EINTR表示在写的时候出现了中断错误,如果是EPIPE表示网络连接出现了问题。
&&& Ssize_t read(int fd,void *buf,size_t nbyte)
&&& Read函数是负责从fd中读取内容,当读取成功时,read返回实际读取到的字节数,如果返回值是0,表示已经读取到文件的结束了,小于0表示是读取错误。
&&& 如果错误是EINTR表示在写的时候出现了中断错误,如果是EPIPE表示网络连接出现了问题。
&&& 有了上面的两个函数,我们就可以向客户端或者是服务器端进行数据传输了!比如我要传送一个结构体,可以使用下面的方法:
&&& 客户端向服务器:
&&& Write(sock,(void *)&stu,sizeof(struct student));
&&& 服务器读:
&&& Char buffer[sizeof(struct student)];
&&& Struct *my_
&&& Read(sock,(void *)buffer,sizeof(struct student));
&&& My_student=(struct student)
&&& 在网络上传递数据时,我们一般把数据转换为char类型,接收的时候也是一样的的。没必要在网络上传递指针。
&&& Recv函数和send函数
&&& Recv函数和read函数提供了read和write函数一样的功能,不同的是他们提供了四个参数。
&&& Int recv(int fd,void *buf,int len,int flags)
&&& Int send(int fd,void *buf,int len,int flags)
&&& 前面的三个参数和read、write函数是一样的。第四个参数可以是0或者是一下组合:
&&& MSG_DONTROUTE:不查找表
&&& 是send函数使用的标志,这个标志告诉IP,目的主机在本地网络上,没有必要查找表,这个标志一般用在网络诊断和路由程序里面。
&&& MSG_OOB:接受或者发生带外数据
&&& 表示可以接收和发送带外数据。
&&& MSG_PEEK:查看数据,并不从系统缓冲区移走数据
&&& 是recv函数使用的标志,表示只是从系统缓冲区中读取内容,而不清楚系统缓冲区的内容。这样在下次读取的时候,依然是一样的内容,一般在有过个进程读写数据的时候使用这个标志。
&&& MSG_WAITALL:等待所有数据
&&& 是recv函数的使用标志,表示等到所有的信息到达时才返回,使用这个标志的时候,recv返回一直阻塞,直到指定的条件满足时,或者是发生了错误。
阅读(36935) | 评论(0) | 转发(4) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。本帖子已过去太久远了,不再提供回复功能。Service Unavailable
Service Unavailable
HTTP Error 503. The service is unavailable.

我要回帖

更多关于 socket read recv 的文章

 

随机推荐