vb缓存
① VB串口通信缓存区怎么计算
你看一下属性设置,下一个MSDN,里面搜索MSCOMM的属性
OutBufferSize
属性
以字节的形式设置并返回传输缓冲区的大小。
语法
object.OutBufferSize
[
=
value
]
OutBufferSize
指整个传输缓冲区的大小:缺省值是
512
字节。不要把该属性与
OutBufferCount
属性混淆,OutBufferCount
属性返回当前在传输缓冲区等待的字节数。
注意
传输缓冲区设置的越大则应用程序可用内存越小。但若缓冲区太小,若不使用握手协议,就可能有溢出的危险。一般的规律是,首先设置一个
512
字节的缓冲区。如果出现溢出错误,则通过增加缓冲区的大小来控制应用程序的传输速率。
数据类型
Integer
② VB 读取网络缓存文件夹
'添加 text1,command1
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function SHGetSpecialFolderLocation Lib "Shell32" (ByVal hwndOwner As Long, ByVal nFolder As Integer, ppidl As Long) As Long
Private Declare Function SHGetPathFromIDList Lib "Shell32" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal szPath As String) As Long
Const COOKIES = &H21&
Const MAX_LEN = 200
Dim stmp As String * MAX_LEN
Dim lenght As Long
Dim str_TempLoad As String
Private Sub Command1_click()
SHGetSpecialFolderLocation 0, COOKIES, pidl
SHGetPathFromIDList pidl, stmp
lenght = GetTempPath(MAX_LEN, stmp)
str_TempLoad = Left(stmp, lenght)
Text1 = str_TempLoad
End Sub
③ vb 清空网页缓存文件夹
用个简单的批处理就可以解决的!!!
新建一个文本文档,写入:
del /f /s /q "%userprofile%\Local Settings\Temporary Internet Files\*.*"
保存为后缀是bat的文件,双击即可。
④ VB计算器缓存用哪个数据类型
如果是VB6.0的话,理想是Long,表示范围最大的当属Double
★参考MSDN:
⑤ vb怎样缓存text内的内容
简单哦,随便定义一个变量比如:dim str as string
str=text1.text'根据文本框的名字定
⑥ vb winsock清除缓存区
优化大师,明确垃圾礼仪
内360安全卫士推荐很容易在安装时不要安装在C盘的软件和其他的东西后继续使用,您可以创建其他下载一个单独的文件夹磁盘,这样可以节省大量的磁盘空间
⑦ vb.net如何实现缓存处理
首先~~需要确认的是,每次读取花时间的问题~是在连接上还是在创建实例上。
如果是在创建实例上,需要做【单例模式】,建议所有数据创建在Mole中,并做全局变量。
Cache是一种B/S,的MVC方式。
缓存方式有很多~~~
一种是物理方式(做物理RAM内存开避空间)
一种是文件方式(做文件)
如文件方式,较常出现的如MVC的缓存,就是大概原理就是,把不经常用到(变化)的数据信息放到文件中,采用读取文件的方式(比访问数据快),存在指定或CurrentDir中。
如果想方便~需要追加一系列状态标识~当访问时,触发变更,然后在读取数据前,确认这个状态是否变动,如果变动说明数据库有变动,需要再次访问数据库。如果没有变动,则读取文件。
这种就叫缓存技术。
当然,我说的这种是比较简单的,还是需要设计思想。
⑧ VB 如何把过大的文件存放于缓存然后再处理
所谓存放于缓存,其实就是把文件内容都读出来,放到一个变量或数组中。
⑨ VB 如何清除Sock缓存
由于socket是以数据流的形式发送数据,接收方不知道对方一次性发送了多少数据,也能保证对方一次性发送的数据能在同一刻接收到,所以Receive方法是这么工作的:
接受一个byye[]类型的参数作为缓冲区,在经过一定的时间后把接收到的数据填充到这个缓冲区里面,并且返回实际接收到数据的长度,这个实际接收到的数据长度有可能为0(没有接收到数据)、大于0小于缓冲区的长度(接收到数据,但是没有我们预期的多)、等于缓冲区的长度(说明接收到的数据大于等于我们预期的长度)。
每次接收缓冲区都用同一个byte[] byteMessage,并且你没有检查接收到的数据长度,所以第一次你接收到的数据是123456,第二次你只接收到了8,但是缓冲区里面还有23456,所以加起来就是823456了。
socket接收缓冲区的大小有讲究,设置大了接收起来慢,因为它要等尽可能多的数据接收到了再返回;设置小了需要重复多次调用接收方法才能把数据接收完,socket有个属性,标识了系统默认的接收缓冲区大小,可以参考这个!
还有就是用recv读取,但是由于不知道缓存里有多少数据,如果是阻塞模式,到最后必然等到超时才知道数据已经读取完毕,这是个问题。
另一个是用fgetc,通过返回判断是否是feof:
whlie (1) { a=fgetc(f);if (feof(f)) break;//…
b=fgetc(f);if (feof(f)) break;//…}当然,我不知道读取完毕后最后一次调用fgetc会不会堵塞,需要测试。
在非阻塞模式下,我们用recv就可以轻松搞定了,但是阻塞模式下,由于我们不知道缓冲区有多少数据,不能直接调用recv尝试清除。
使用一个小小的技巧,利用select函数,我们可以轻松搞定这个问题:
select函数用于监视一个文件描述符集合,如果集合中的描述符没有变化,则一直阻塞在这里,直到超时时间到达;在超时时间内,一旦某个描述符触发了你所关心的事件,select立即返回,通过检索文件描述符集合处理相应事件;select函数出错则返回小于零的值,如果有事件触发,则返回触发事件的描述符个数;如果超时,返回0,即没有数据可读。
重点在于:我们可以用select的超时特性,将超时时间设置为0,通过检测select的返回值,就可以判断缓冲是否被清空。通过这个技巧,使一个阻塞的socket成了‘非阻塞’socket.
现在就可以得出解决方案了:使用select函数来监视要清空的socket描述符,并把超时时间设置为0,每次读取一个字节然后丢弃(或者按照业务需要进行处理,随你便了),一旦select返回0,说明缓冲区没数据了(“超时”了)。
struct timeval tmOut;tmOut.tv_sec = 0;tmOut.tv_usec = 0;fd_set fds;FD_ZEROS(&fds);FD_SET(skt, &fds);
int nRet;
char tmp[2];
memset(tmp, 0, sizeof(tmp));
while(1)
{ nRet= select(FD_SETSIZE, &fds, NULL, NULL, &tmOut);if(nRet== 0) break;recv(skt, tmp, 1,0);}
这种方式的好处是,不再需要用recv、recvfrom等阻塞函数直接去读取,而是使用select,利用其超时特性检测缓冲区是否为空来判断是否有数据,有数据时才调用recv进行清除。
有人说同样可以用recv和socket的超时设置去清空啊,这个没错,但是你需要直接对socket描述符设置超时时间,而为了清空数据而直接修改socket描述符的属性,可能会影响到其他地方的使用,造成系统奇奇怪怪的问题,所以,不推荐使用。