您的位置:程序门 -> vb -> 网络编程



winsock接收,客户端如何处理连续不间断的大量数据


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


winsock接收,客户端如何处理连续不间断的大量数据[已结贴,结贴人:perpy]
发表于:2007-01-18 17:29:00 楼主
数据长度很小一般10个字符左右
服务器端数据不停产生,并不停发送数据senddata(不能漏掉数据)

客户端dataarrival处理数据通过split分解出1个个数据,并经过计算后存入数据库
现在的问题是:好像客户端还没处理完前一批数据,后一批数据就到了,导致2个现象:
1、服务器端程序的发送数据不动了
2、客户端慢慢没有反映了(几秒钟内就发生并持续),这时候关闭服务器的数据发送,客户端就恢复反映了。

我知道可能是数据处理效率的问题,想知道如何解决,
1、是不是一定要用自定义缓冲数组,如何做?
2、有没有办法并发处理这些数据?

急!!!
发表于:2007-01-18 17:45:281楼 得分:10
测试环境不能是本级   必须是2台机器   贴测试代码
发表于:2007-01-18 18:39:162楼 得分:10
我觉得2台机器情况会有所缓解,但是应该解决不了根本问题
发表于:2007-01-18 19:03:593楼 得分:10
在处理完第一次发送过来的数据后   返回服务器1个标示   服务器再发送第二次数据   如次循环
发表于:2007-01-18 19:41:024楼 得分:0
现在的问题我的理解在于本地处理收到的数据不够快(而且每没有别的方法了),本地在一个sock上等待并处理大量数据力不从心
能不能这样:
一次连接同时建立5个sock和服务器连上,让服务器同时利用5个sock将原来发送的数据分成5份,这样接收端可以有5个sock的dataarrival可以被触发,来模拟出多线程处理的效率?
发表于:2007-01-18 19:50:155楼 得分:0
原来的数据是在本地处理通过200个text的dde来触发text_change事件进行处理的,可以处理得过来(好像text_change是可以并发的)。现在是数据源移到别的地方了,只能用sock送过来。
目前是把这些dde随时产生的大量数据通过一个sock送到客户端,让客户端一个一个处理,就不行了。所以才想到上面搞5个sock的。。。不知道行不行,哎。。。总觉得1个sock也应该有办法
发表于:2007-01-18 21:08:516楼 得分:20
一次连接同时建立5个sock和服务器连上,让服务器同时利用5个sock将原来发送的数据分成5份,这样接收端可以有5个sock的dataarrival可以被触发,来模拟出多线程处理的效率?

==================================================================================

其实这样将会更加混乱
vb是单线程的,虽然winsock在接收的过程中会新建线程,但一旦触发data_arrival之后,winsock已经invoke回主线程,换言之,所有data_arrival里面的代码都在vb的主线程内被处理(如果你会.net,知道如何invoke回主线程,我想你一定会非常清楚这意味着什么)。无论你多少个winsock,在处理数据的这方面,都只会由主线程执行
发表于:2007-01-18 21:11:027楼 得分:0
所以最好的办法还是优化一下你的服务器,不要连续发送数据
或者,如果实在没办法,建议你用   .net。仅仅个人意见
发表于:2007-01-18 22:43:248楼 得分:0
先给分了,希望还能有vb处理快速大量数据的办法


快速检索

最新资讯
热门点击