社区
Windows SDK/API
帖子详情
求救:由于系统缓冲区空间不足或队列已满,不能执行套接字操作(10055)ON Api connet
melice
2002-04-23 11:16:09
在对socket大量open, close之后就会这样了,谁可以解释一下原理么?怎么解决哦?
...全文
1910
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
关于
10055
No buffer space available的调试
之前经常遇到服务器上有时候会出现无法创建新的tcp连接,但ping完全正常的情况。
系统
日志中会出现类似这样的提示: sshd: PID 2096: error: reexec socketpair: No buffer space available 太长不看: 目前看来,大多数的原因是服务端程序的Handle Leaks造成的。 1、64位
系统
,如果进程的Handle超过3000,...
socket网络编程复习笔记(四):认识
套接字
函数
在前面的内容中,我们知道了通信的基本流程,在通信过程中会用到很多
套接字
函数,诸如socket(),bind(),recv()等等。那么我们在实际编程中,我们该如何正确使用
套接字
函数呢?1.socket函数分类按照函数的功能不同,我们可以将大部分常用的
套接字
函数归入到以下四类中: 通信类:socket(); bind(); listen(); accept();
conne
ct(); recv();
Windows SDK/API
1,183
社区成员
22,335
社区内容
发帖
与我相关
我的任务
Windows SDK/API
Delphi Windows SDK/API
复制链接
扫一扫
分享
社区描述
Delphi Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章