Socket 传输 大数据的问题
本人第一次接触Socket,最近被这个问题困死了!我用Socket传输一个DataSet,这个DataSet的记录数不一定,因此传输的大小每次都不一样,有时会很大,我在程序中是定死了Buffer的大小,这样一来当Buffer小于传输的大小时程序就出错了,不知道怎样让Buffer适应传输的数据大小?
网上有说分包处理的,但不知道怎样做,不知道有没有高人碰到过这种问题,如果有源码看看就最好了!
--------------------编程问答-------------------- 俺最近也碰到了该问题,也想知道一个解决方法。俺的思路是:分异步发送和同步发送两种情况。同步发送时,可以把发送数据分多段,一段段地发;异步发送时,构造一个发送数据的队列,该队列与当前Socket关联,是字节数组队列,发送时从该队取字节数组。此外,同步或异步发送时,还可以采用一个独立的线程专门负责数据队列中数据的发送,此时必须把Socket对象与待发送包一起push到队列。不知到是否可行,供参考。 --------------------编程问答-------------------- 发送数据集可以把它当做文件发送就行了,这样就不会出错了吧,或者把它生成为XML文件,然后再利用发送文件的方式发送! --------------------编程问答-------------------- 还有一个方法,定义一个类,这个类里面设两个属性字段,一个为INT类型,用来储存要发送的DATASET的大小值,另一个则为要发送的DATASET.这样,在发送DATASET的时候,可以把它和它的大小值赋给那个类,再把这个类序列化为字节数组发送.在接收端也定义这样一个类,在接收的时候将接收的字节数组反序列化为那个类,接着就可以用这个类里储存的DATASET大小属性字段的值来实例化一个字节数组,这样的话就不会出现大小不一样的情况了! --------------------编程问答-------------------- 多谢楼上的两位兄弟!
我被搞得晕死了,方便把源码发一下吗?
我的QQ是:43309251 --------------------编程问答-------------------- 楼主老兄,都不知道你程序的代码是怎么设计的,怎么发代码给你啊! --------------------编程问答-------------------- 抓包工具用来抓下看 --------------------编程问答-------------------- 楼主这个问题还没解决吗?楼主能不能发下你现在发送数据和接收数据所用的协议,这样才能帮你分析一下!
补充:.NET技术 , C#