WINSOCK可以模拟成MSCOMM串口那样设置从接受缓存区读取的字符数吗 
MSCOMM控件中属性Inputlen可以直接设置或返回INPUT属性从接受缓存区中读取的字符数
有什么方法能使WINSOCK.GETDATA也能达到这种效果?
请高手指点下

解决方案 »

  1.   

    winsock的getdata方法本身就有读取的数据大小这个参数,并不是每次都要把缓冲区中的数据全读出来:
    winsock.getdata 存放数据的变量名称,数据类型,读取的数据大小
      

  2.   

    原本那程序是按一个串口的接口协议来处理数据,当读取的第一个数据满足第一个条件后,再继续往下运行读取第2个(再从接收缓存中读取一个数据)数据判断是否满足第2个条件,以此类推;如果不满足就读取第2个数据判断是否满足,一直这样往下读取,直到第N个满足第一个条件,再往下运行读取N+1判断是否满足第2个条件.
    下列代码是串口读取数据的:
    Private Sub Msrec_OnComm()
    On Error GoTo SendfastSelect Case Msrec.CommEvent
    Case comEvReceive '只要收到一个字节就触发此事件
    DC = 0'''''''''第一次数据判断'''''''''
    If (IDf = False) And (IDbg = 0) Then
      Inst = Msrec.Input '读入一个字节到临时变量
      Ins(0) = Inst(0) '转存为字节型变量
      InsD = Ins(0)
      If InsD = 2 Then '判断是否为起始符号
        ''''读入数据量大小'''''
        Do While Msrec.InBufferCount = 0
        Loop
        Inst = Msrec.Input
        Ins(1) = Inst(0)
        InsD = Ins(1)
        IDsum = InsD
        IDsum = IDsum - 3
        IDsid = 0
        '''''读入报文标识''''
        Do While Msrec.InBufferCount = 0
        Loop
        Inst = Msrec.Input '读入下一字节
        Ins(2) = Inst(0)
    串口从接收缓存区中读取一个数据的方法为Inst=Msrec.Input(属性Inputlen的值为1)
    换成WINSOCK从接收缓存区中读取一个数据:
    WINSOCK.getdata str1,vbbyte,1
    Inst=str1
    是不是象这样就可以了?