socket多线程传输文件
发布时间: 2025-01-17 10:21:11
㈠ VC如何实现多线程文件传输
发送端,将文件分成N份(如5),FILE1(0-a字节),FILE2(a-b字节),FILE3(b-c字节),FILE4(c-d字节),FILE5(d-文件长度)。 发送可以使用M个线程(如5),THREAD1负责发送FILE1,依次类推,发送的每个数据包包括如下内容:文件内容的长度,文件内容,文件内容起始点相对于整个文件的位置,文件内容相对于整个文件的位置。例如:文件A的总长度为100000字节,则可以先发送一个数据包给接收端,让其准备接收,接着发送 4000(长度),....(内容的二进制流),0(起始),4000(结束)。 接收端根据接收的包写文件即可。 http://www.vckbase.com/document/viewdoc/?id=448 看一下吧
㈡ socket 多线程 并发时会丢数据如何解决
把存储数据的数据所有的数据结构 换成 线程安全的集合,例如用Vector 而不用 ArrayList 用HashTable 而不用HashMap ,用StringBuilder 而不用StringBuffer;
多线程共有的函数尽量声明为 synchronized ,复杂的数据交互,在线程与线程的时间间隙里面最好不要调用 Thread.sleep方法,另外数据的传输,组号采用字节流,而不要采用字符流,文件的读取访问最好使用单例模式。
一般是在服务器端加,没有必要在客户端端加