问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

socket套接字及缓冲区详解(一篇搞定~)

发布网友 发布时间:2024-10-03 12:48

我来回答

1个回答

热心网友 时间:2024-11-29 18:51

一、域(domain)

域指明套接字通信所使用的网络介质。常见的是AF_INET(IPv4)或AF_INET6(IPv6),代表Internet网络。这类网络多用于Linux局域网和因特网。

二、类型(type)

流套接字(SOCK_STREAM):

流套接字提供面向连接且可靠的传输服务。它确保无差错、无重复、按序数据传输,通过使用TCP协议实现。

数据报套接字(SOCK_DGRAM):

数据报套接字提供无连接服务,不保证数据传输的可靠性,数据可能丢失或重复,且接收顺序不确定。它使用UDP协议传输数据。

原始套接字(SOCK_RAW):

原始套接字与标准套接字不同,它能读取内核未处理的IP数据包。标准套接字仅能读取TCP或UDP协议的数据。因此,访问其他协议需使用原始套接字。

三、协议(protocol)

协议用于指定通信协议,如使用默认协议(0)、TCP(IPPROTO_TCP)或UDP(IPPROTO_UDP)。

四、socket缓冲区以及阻塞模式

1、缓冲区简介

每个socket创建后,分配输入与输出缓冲区。write()/send()先将数据写入缓冲区,TCP协议负责发送至目标机器。read()/recv()从缓冲区读取数据。

2、使用write()/send()发送数据

【阻塞模式下】:

检查缓冲区,空间不足时阻塞,直至数据发送完毕或缓冲区空间足够。如果TCP发送数据,输出缓冲区锁定,直至解锁才允许写入。

【非阻塞模式下】:

数据拷贝至缓冲区,缓冲区空间不足时返回成功拷贝大小。若为0,返回-1并设置errno为EAGAIN。

3、使用read()/recv()读取数据

【阻塞模式下】:

检查缓冲区,有数据则读取,无数据阻塞直至数据到达。

【非阻塞模式下】:

接收数据时可能遇到“Resource temporarilyunavailable”错误,返回EAGAIN。此错误不影响同步,循环recv继续。

五、面试题:TCP服务端一直sleep,客户端发送数据问题

1、TCP发送数据过程:

TCP确保按序、无差错接收数据。服务端sleep不接收数据,客户端持续write,输入缓冲区和输出缓冲区最终会满,write无法继续。

2、阻塞方式:

服务端sleep,客户端write导致数据积压,直至缓冲区满或数据发送完毕。

3、非阻塞方式:

服务端sleep,客户端write返回-1并设置errno为EWOULDBLOCK,表示缓冲区空间不足。

总结,套接字是不同主机间进程通信的约定,通过特定的域、类型和协议定义。缓冲区管理数据传输,阻塞或非阻塞模式控制I/O操作。理解这些概念有助于解决网络编程中的问题。
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
电脑今天玩游戏突然风扇转的很快.鲁大师显示cpu86度平均79度然后从开... SL400P9C开机后一直窝吱吱的声音是怎么回事?电流声就正常吗?国产货还能... 手机号给别人补号了后通话提示什么? 养小金鱼吃什么食物 给小金鱼吃什么 家里小金鱼吃什么食物 大拇指筋断了后遗症 ...第一次剪去它的五分之二,第二次剪去它的三分之一,这块步还剩几分之... 一根一米长的小棒第一次截去它的三分之一第二次截去剩下的三分之一第... ...第一次用去全长的三分之一,第二次用去五分之六米,还剩全长的50%,这... socket()返回值 恶魔奶爸61还会出吗? Winsock通过调用 塔吊黑匣子用途 恶魔奶爸60集是否是大结局 恶魔奶爸真的大结局了吗?我真想看到300~400集。 (网页制作)用FP制作网页怎么制作给浏览者打字或输入帐号的对话框 在那里可以下载到制作网站,网页的程序.急用!? 哪里有制作网页三剑客的网站 ...都是在做中学来的,说说你的哪些本领是在做中学? ...最好把高考成绩也说说。这是大事,不能开玩笑呀! 网页教学网网页教学网简介 1、请你说说,刚进入中学时,你觉得最不适应的是什么?后来你是怎样去适应... 请教泰国至香港机票,拜托了! 没有港澳通行证,有曼谷至香港机票,请问,可以从香港正常进入内地吗_百 ... 塞尔维亚消费高吗 为什么手机银行买不了基金 中国银行手机银行中的哪一菜单下可以指定日期预约购买基金?_百度... 手机银行买基金有什么优势 ...的文件我放到桌面上然后打不开了 在ug中显示部件被卸载 怎么办... 恶魔奶爸一共是多少集?我想仔细的问一下现在是2012-02-01 恶魔奶爸是... 塔吊黑匣子简介 给宝宝挑选合适的玩具标准有哪些 石家庄私立高中是自立中学好还是金石中学好? 大家对石家庄自立高中评价怎么样? 有谁知道石家庄自立高中管理严格不? 父母怎样给宝宝挑选合适的生日礼物? 两位高中生暑假期间在外打工做粗活 中国第一位获奥运会男子跳水金牌的运动员是谁 高中生如何提高个人魅力 ...也就是今天十一点半出生的 想请各位大师帮忙取个好名字 ,先谢谢了... 我女儿是2013年阳历5月6号早上5点56分出生。农历3月27。父姓吴请大家... 支票的出票人在支票上记载自己为收款人的意义是什么? ...年农历10月28日下午13:45出生的,爸爸姓吴,妈妈姓安,叫什么名号_百 ... ...我女儿出生时间是:2008年阳历12月3日 农历十一月初六 20:00_百度... 2022深圳婚博会门票可以重复进出吗? ...10:52分出生(阳历4月18日)男孩 父亲姓吴 母亲姓李,帮忙取一个好听的... 并没有卵用是什么意思? 啊五卵是什么意思? 上海话阿无卵是什么意思?
  • 焦点

最新推荐

猜你喜欢

热门推荐