我现在要做一个OA系统,其中需要进行文件互传,我听说UDP在知道对方IP与端口后可以畅通无阻的通过两个不同的局域网或通过internet相连的两个不同的局域网!所以我打算用delphi中的idUDPClient下idUDPServer组件来做,可是发现用UDP的话,需要对文件进行分块,等到达对方后再重新组块,我不太清楚如何实现文件分块与文件组块。如果无法实现的话,那用TCP的话在知道对方的IP与端口(象QQ似的通过中间服务器来动态获得对方IP与端口)后是否可以实现在通过internet互联的两个不同局域网间的传输?
共两个问题:
1、用UDP传输,如何实现文件的分块与组块?
2、用TCP在获得对方IP与端口后能否实现 通过internet互联的两个不同局域网间互传大文件?
共两个问题:
1、用UDP传输,如何实现文件的分块与组块?
2、用TCP在获得对方IP与端口后能否实现 通过internet互联的两个不同局域网间互传大文件?
解决方案 »
- delphi cxStyleRepository的用法?
- TMemo中自动换行问题
- 系统报价
- delphi中调用函数的问题,编译可以通过,运行时有错误呀~!!这个问题偶已经想了很久,还是不知道原因,跪求高手帮忙~!!!!!
- Currency转换成字符
- 求一个sql语句;
- 存贮过程中的Output参数如何取得其值?
- 珍藏——身份证号认证算法。(根据国家GB 11643-1999标准。up 有分)
- 我想把Image控件内的图片临时存在一个变量里,请问该怎么做呢?我现在是用了很多临时Image控件
- 5年后从新开始学习程序了,希望 programming 时间长一点的朋友回答!
- 有兄弟用AceReport或QReport吗?请教一个问题。
- 这样的SQL语句怎么写?(在线等)
那用TCP传输大文件时还用对文件进行分块吗??
文件组合用blockwrite来完成
不知道符合不符合你的要求。
还有你要是想要关于文件分割源代码的话:[email protected] ,记得给俺分呀!呵呵
var buff:array[1..3096] of char;//发送buff
i,fk:int64;//分块数
ileft:integer;//余数
sR:string;
begin
inherited;
fi.Position:=0;//开始处,文件流
fk:=SendForm.fsize div sizeof(Buff);
ileft:=SendForm.fsize mod sizeof(Buff);
for i:=1 to fk do
begin
if Terminated then
break;
FillChar(buff, SizeOf(buff), #0);
fi.Read(buff,sizeof(Buff));
SendUdp.SendBuffer(aHost,aport,buff,sizeof(buff));//发送一个包 sendudp 为 udpclient
sRe:=SendUdp.ReceiveString;//等对方回复,同步
if sRe='#83' then//接收方终止
begin
break;
end;
end;
if (ileft<>0) then
begin
FillChar(buff, SizeOf(buff), #0);
fi.Read(buff,ileft);
SendUdp.SendBuffer(aHost,aport,buff,sizeof(buff));//发送一个包
sRe:=SendUdp.ReceiveString;//等对方回复,同步
end;
end;
是以程序是使用udp发文件的一部分,希望有所帮助。
你的代码能发的再详细点吗?
或TFileStream.CopyFrom()你可以在流的最后加上你的信息参数,到客户端时再根据这些信息合并
能说的再详细点吗??
或者有没有类似源代码??
我又该如何从流中剔除我所加入的参数信息??比如流中现已有我要传输的4K信息了,可是我要把这是第几块,还是这是什么类型的信息这类参数也要传过去,应该如何把这些参数信息加入呢?到了对方后,又不能把参数信息也写进文件,所以要剔除参数,这个剔除又如何实现呢??还有idUDPClient这个组件有一个receivestring()这个方法,上面的代码如它来做同步如:
》》 sRe:=SendUdp.ReceiveString;//等对方回复,同步我想知道ReciveString()所收到的信息是对方自动发回来的确认信息还是编程在让对方用send()发回来的信息呢?
比如:
client: idUDPClient.Send('sfjslkf');
str:=idUDPClient.ReciveString();Server:
不调用Send()方法这种情况下Client的Recivestring()方法还能是到对方的反回值吗??
你好!你要的东西俺已经发过去了!希望你能用的上!