我在一个应用程序中用了两个Winsocket控件,使用不同的端口如:4000和4001
在发送事件中,我这样写
Winsock1.send data1
紧接着写
Winsock2.send data2
在接受端同样有两个Winsocket控件,使用相应的端口来接收
不想到接受不到data1,和Winsock1对应的接受Winsock没有触发DataArrival事件。
而data1好象一直在Winsock1的发送缓冲中,我在上面两行之间延时一段时间就行了,为什么会这样呢?是不是有冲突!如果不想延时的话又该咋办?

解决方案 »

  1.   

    你的整个过程是怎么回事,你用什么协义?
    你最好把指定端口,连接(TCP用),确认,发送,说请楚一点
      

  2.   

    是的,确实这样。我想,你的代码类似于:
      sck1.senddata Dat1
      sck2.senddata Dat2
    不是吗?
    可是,如果把上面第二行代码改为
      sck1.senddata Dat2
    就是说,sck1发送两次数据,那么接受端Dataarrive事件触发几次呢?你知道的,只有一次。这就是关键。我的代码:
    加载两个timer控件,tmr1和tmr2Private sub Send(Dat1 as string,Dat2 as string)
      tmr1.interval=50
      tmr1.enabled=true
      tmr1.tag=dat1
      tmr2.interval=60
      tmr2.enabled=true
      tmr2.tag=dat2
    end sub
    private sub tmr1_timer()
      sck1.senddata tmr1.tag
      tmr1.tag=""
      tmr1.enabled=false
    end sub
    'tmr的代码类似,略
      

  3.   

    谢谢Fnems,
    出现这个问题的原因是不是冲突呢?你是用timer控件延时的,我的socket1是500毫秒定时发送,socket2是手动发送信息,也有时是随机的,无法用定时器,我咋样才能不冲突呢?