数据长度很小一般10个字符左右
服务器端数据不停产生,并不停发送数据sendData(不能漏掉数据)客户端Dataarrival处理数据通过split分解出1个个数据,并经过计算后存入数据库
现在的问题是:好像客户端还没处理完前一批数据,后一批数据就到了,导致2个现象:
1、服务器端程序的发送数据不动了
2、客户端慢慢没有反映了(几秒钟内就发生并持续),这时候关闭服务器的数据发送,客户端就恢复反映了。我知道可能是数据处理效率的问题,想知道如何解决,
1、是不是一定要用自定义缓冲数组,如何做?
2、有没有办法并发处理这些数据?急!!!

解决方案 »

  1.   

    现在的问题我的理解在于本地处理收到的数据不够快(而且每没有别的方法了),本地在一个sock上等待并处理大量数据力不从心
    能不能这样:
    一次连接同时建立5个sock和服务器连上,让服务器同时利用5个sock将原来发送的数据分成5份,这样接收端可以有5个sock的DataArrival可以被触发,来模拟出多线程处理的效率?
      

  2.   

    原来的数据是在本地处理通过200个TEXT的DDE来触发Text_Change事件进行处理的,可以处理得过来(好像TEXT_Change是可以并发的)。现在是数据源移到别的地方了,只能用Sock送过来。
    目前是把这些DDE随时产生的大量数据通过一个Sock送到客户端,让客户端一个一个处理,就不行了。所以才想到上面搞5个sock的不知道行不行,哎总觉得1个sock也应该有办法
      

  3.   

    一次连接同时建立5个sock和服务器连上,让服务器同时利用5个sock将原来发送的数据分成5份,这样接收端可以有5个sock的DataArrival可以被触发,来模拟出多线程处理的效率?==================================================================================其实这样将会更加混乱
    vb是单线程的,虽然winsock在接收的过程中会新建线程,但一旦触发data_arrival之后,winsock已经Invoke回主线程,换言之,所有data_arrival里面的代码都在vb的主线程内被处理(如果你会.NET,知道如何Invoke回主线程,我想你一定会非常清楚这意味着什么)。无论你多少个winsock,在处理数据的这方面,都只会由主线程执行
      

  4.   

    所以最好的办法还是优化一下你的服务器,不要连续发送数据
    或者,如果实在没办法,建议你用 .net。仅仅个人意见