使用 socket 如何传送大文件 谢谢大虾 关键部分最好有原代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //发送的,Procedure TForm1.SendStream();Var sendsize: longint; Buf: Array[0..BufSize - 1] Of char; ReceivedString: String;Begin If LeftSize <= 0 Then Begin stream.Clear; exit; End; If LeftSize > BufSize Then SendSize := BufSize Else SendSize := LeftSize; stream.ReadBuffer(buf, SendSize); LeftSize := LeftSize - SendSize; Try IdUDPClient1.SendBuffer(Buf, SendSize); Except stream.Clear; showmessage('发送文件时出错!'); exit; End; ReceivedString := IdUDPClient1.ReceiveString(); If ReceivedString <> strflag Then Begin stream.Clear; showmessage('发送文件时出错!'); exit; End Else sendstream();End;//下面是收的Procedure TForm2.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle);Var Buf: Array[0..BufSize - 1] Of char; revsize: longint;Begin revsize := adata.Size; adata.ReadBuffer(Buf, revsize); If sametext(copy(buf, 1, 8), '[Start] ') Then Begin filename := copy(buf, 9, revsize-8); ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, strflag[1], length(strflag)); exit; End;// If sametext(copy(buf, 1, 8), '[Send] ') Then// Begin stream.WriteBuffer(buf, revsize); ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, strflag[1], length(strflag)); If revsize < BufSize Then Begin stream.Position := 0; Try stream.SaveToFile(extractfilepath(paramstr(0)) + filename); Except End; stream.Clear; End; exit;// End;End; 一个神奇的文本框内存占用问题。 十进制怎么转成BCD码啊 怎么都这样呢,我就不信没人有个明确的说法? 关于图形控件软件开发.做这方面的朋友试试应该有帮助... 高分求教,哪有CRM的数据库设计 肺都要气炸了 ! 我的Access库怎么总是无法联接呀?(急++,在线等待。。。)! 请问各位有经验的大虾,我这样的水平能找一份什么样的工作? IE代理服务器设置,为什么SOCKET没有选中? 没有连接线控制的代码? 显示属性,调整图标大小时的那个带两个小箭头的显示数字的Box是什么控件? 怎样用socket实现点对点的文件传输?两个不在同一局域网的电脑怎么办?
Procedure TForm1.SendStream();
Var
sendsize: longint;
Buf: Array[0..BufSize - 1] Of char;
ReceivedString: String;
Begin
If LeftSize <= 0 Then
Begin
stream.Clear;
exit;
End;
If LeftSize > BufSize Then
SendSize := BufSize
Else
SendSize := LeftSize;
stream.ReadBuffer(buf, SendSize);
LeftSize := LeftSize - SendSize;
Try
IdUDPClient1.SendBuffer(Buf, SendSize);
Except
stream.Clear;
showmessage('发送文件时出错!');
exit;
End;
ReceivedString := IdUDPClient1.ReceiveString();
If ReceivedString <> strflag Then
Begin
stream.Clear;
showmessage('发送文件时出错!');
exit;
End
Else
sendstream();
End;//下面是收的
Procedure TForm2.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
Var
Buf: Array[0..BufSize - 1] Of char;
revsize: longint;
Begin
revsize := adata.Size;
adata.ReadBuffer(Buf, revsize); If sametext(copy(buf, 1, 8), '[Start] ') Then
Begin
filename := copy(buf, 9, revsize-8);
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, strflag[1],
length(strflag));
exit;
End;// If sametext(copy(buf, 1, 8), '[Send] ') Then
// Begin
stream.WriteBuffer(buf, revsize);
ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, strflag[1],
length(strflag));
If revsize < BufSize Then
Begin
stream.Position := 0;
Try
stream.SaveToFile(extractfilepath(paramstr(0)) + filename);
Except
End;
stream.Clear;
End;
exit;
// End;
End;