Winsock接收,客户端如何处理连续不间断的大量数据
数据长度很小一般10个字符左右
服务器端数据不停产生,并不停发送数据sendData(不能漏掉数据)
客户端Dataarrival处理数据通过split分解出1个个数据,并经过计算后存入数据库
现在的问题是:好像客户端还没处理完前一批数据,后一批数据就到了,导致2个现象:
1、服务器端程序的发送数据不动了
2、客户端慢慢没有反映了(几秒钟内就发生并持续),这时候关闭服务器的数据发送,客户端就恢复反映了。
我知道可能是数据处理效率的问题,想知道如何解决,
1、是不是一定要用自定义缓冲数组,如何做?
2、有没有办法并发处理这些数据?
急!!!
[解决办法]
测试环境不能是本级 必须是2台机器 贴测试代码
[解决办法]
我觉得2台机器情况会有所缓解,但是应该解决不了根本问题
[解决办法]
在处理完第一次发送过来的数据后 返回服务器1个标示 服务器再发送第二次数据 如次循环
[解决办法]
一次连接同时建立5个sock和服务器连上,让服务器同时利用5个sock将原来发送的数据分成5份,这样接收端可以有5个sock的DataArrival可以被触发,来模拟出多线程处理的效率?
==================================================================================
其实这样将会更加混乱
vb是单线程的,虽然winsock在接收的过程中会新建线程,但一旦触发data_arrival之后,winsock已经Invoke回主线程,换言之,所有data_arrival里面的代码都在vb的主线程内被处理(如果你会.NET,知道如何Invoke回主线程,我想你一定会非常清楚这意味着什么)。无论你多少个winsock,在处理数据的这方面,都只会由主线程执行