社区
Windows SDK/API
帖子详情
求救:由于系统缓冲区空间不足或队列已满,不能执行套接字操作(10055)ON Api connet
melice
2002-04-23 11:16:09
在对socket大量open, close之后就会这样了,谁可以解释一下原理么?怎么解决哦?
...全文
2059
2
打赏
收藏
求救:由于系统缓冲区空间不足或队列已满,不能执行套接字操作(10055)ON Api connet
在对socket大量open, close之后就会这样了,谁可以解释一下原理么?怎么解决哦?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
melice
2002-04-26
打赏
举报
回复
····虽然你的回答和我这里的题目不是很相关,但是也给了我另外一个问题的思路启发。我试试问问你说的哪个朋友吧。 thanks any way.
forgot2000
2002-04-24
打赏
举报
回复
确实是这样,Socket程序如果一端连续发送的数据很多,在另一端很容易出现两个包接在一起,或者包里面的数据丢失一部分的情况,也就是说,在大数据量的Socket发送接收过程中缓冲区溢出是经常发生而且很难解决的问题。我之前看过一篇帖子,有位朋友说自定义高层协议,他简单地说了一下他的思路,我转帖如下,希望对你有帮助:
数据包结构:(以Byte为单位)
0:信息标志位,必须为非零值
1-4:信息正文长度,DWORD类型
5-:信息正文
接收方应该使用两个缓冲区(必须足够大——我用的是16K),同一时刻只能有一个缓冲区处于
写状态,而另一个缓冲区则必须处于读状态。一旦读缓冲区的信息被处理完毕,就交换两个缓冲区
的角色,实现流水工作。在实际操作是要注意绝对不能同时读写同一个缓冲区。
每个缓冲区有两个指针——读指针与写指针,写指针总是指向接收缓冲区有效信息的末端,在
读取时,要注意使读指针不能超过写指针。
每次Socket接收到一个Socket包,并不要急于处理它们,而是将其写入到接收缓冲区的末端。
信息读取线程针对读缓冲区进行信息读取。根据上面的信息包结构,很容易得到信息的读取方法:
1.判断读指针指与写指针是否重合,如重合,则说明信息已经读取完毕,读取过程结束,进行进行
缓冲区交换,再次进行读取操作。
2.判断读指针指向的Byte是否为0,若为零,则说明读指针之后不再有信息(要做到这一点,接收
缓冲区在进行写操作之前必须初始化为全零),读取过程结束,其余操作同上。
3.将读指针加1,读取信息包中的正文长度信息。并根据正文长度将正文信息读取到相应的临时缓冲
区中去,调用相应的信息处理过程对其进行处理。在处理完毕之后,将读指针置于正文信息之后,
转到过程1。
你可以发信给creation_zy@china.com,详细地问问他的解决方法。
zabbix客户端无法上传数据
昨天发现有一台Windows服务器无法向zabbix服务端汇报数据。经过检查Windows上的客户端日志,可以看到以下错误。 31976:20200206:154445.873 active check configuration update from [192.168.3.61:10051] started to fail (cannot
conne
ct to [[192.168.3.61...
网络
套接字
编程(socket 详解)
socket 编程
套接字
概念 Socket本身有“插座”的意思,在Linux环境下,用于表示进程间网络通信的特殊文件类型。本质为内核借助
缓冲区
形成的伪文件。既然是文件,那么理所当然的,我们可以使用文件描述符引用
套接字
。与管道类似的,Linux
系统
将其封装成文件的目的是为了统一接口,使得读写
套接字
和读写文件的
操作
一致。区别是管道主要应用于本地进程间通信,而
套接字
多应用于网络进程间数据的传递。 在T...
UNIX域
套接字
文章目录UNIX域
套接字
serverclientmakefileRunner UNIX域
套接字
域
套接字
作为进程间通信的一种手段,值得我们研究一下。 域
套接字
实现本地进程间通信,同样有服务端和客户端之分。一个进程作为客户端,另一个进程作为服务端。这个和TCP socket类似,但是不一样。域
套接字
不经过底层网络。数据结构使用的是struct sockaddr_un。对于这个结构,重点便是填充sun_family和sun_path,sun_path是文件路径。调用的socket接口也是socket、bind
tcp socket发送
缓冲区
、接受
缓冲区
、滑动窗口协议之间的关系
原文:http://webseo8.net/newsinfo.aspx?type=0&id=220&page=0 点击打开链接 对于每一个TCP的SOCKET来说,都有一个发送
缓冲区
和接受
缓冲区
与之对应,下面举个例子说说发送
缓冲区
、接受
缓冲区
、滑动窗口协议之间的关系。 一、recv端 在监听
套接字
上准备accept,在accept结束以后不做什么
操作
,直接sle
socket的发送和接收
缓冲区
对于每一个TCP的SOCKET来说,都有一个发送
缓冲区
和接受
缓冲区
与之对应,下面举个例子说说发送
缓冲区
、接受
缓冲区
、滑动窗口协议之间的关系。 一、recv端 在监听
套接字
上准备accept,在accept结束以后不做什么
操作
,直接sleep很久,也就是在recv端并不做接收数据的
操作
,在sleep结束之后再recv数据。 二、send端 通过查看本
系统
内
Windows SDK/API
1,184
社区成员
22,326
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章