socket编程 多进程 传输文件

windows和linux 互相通信,目前的状况时开启两个进程传输两个文件是没有问题。。。可项目要求是两个进程两边同时开启两个进程同时传输同一个文件,希望大家给点意见。最终的结果还是要求对文件进行合并。。。
ps:我已经弄了半个月了毫无头绪。求大神帮忙啊!!!

这个还是一样的,只要建立通信先,然后发送,接收文件。就可以处理

这个很简单,你定义下协议。
协议分为2种数据包,一个是控制命令,比如请求某个文件从偏移地址开始的多少字节。
一个是数据,数据包的构成是 开始地址+字节长度+真实的数据。
你要发送数据就按照这个格式发。接收的时候先开一个和文件一样大的文件,然后再根据传输的数据写入对应的块中。
你可以像迅雷那样再建一个和接收文件同名的文件,用位图的方式记录下哪些块传输了,哪些没有传。
所有的块都标记为传输,就算传输完成。

可以建立一个主进程,来处理连接。连上后,对要处理的文件分片打上序号,把分片信息传过去,然后两边再启动一个线程,接收端再建立一个内存映射文件,新建立的进程按主进程约定的端口号建立连接。两边的两个进程根据主进程传过来的分片策略发送和接收文件,写入这个共享文件的对应位置,子进程接收完毕后,通过ipc告诉主进程,主进程也接收完毕后则关闭文件。

简单说,你可以预先设定一个协议,让发送方知道要发送的是从第几字节到第几字节,接收方要标记好那一部分传输完成了,这样才能让接收端知道可以请求那一部分,之后就是基本的文件操作了(发送方根据接收方的请求的起始字节和结束字节(或长度)读文件发送,接收方写文件)。

你用两个进程分别传一半就可以了,接收方收到后直接合并保存即可

caozhy 将的是真理