服务端接收程序代码
if pagi < pagshu then
begin
try
iRecvLength:=2048;
GetMem(bufRecv,2048);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv,iRecvLength);
fsRecv.WriteBuffer(bufRecv,iRecvLength);
finally
FreeMem(bufRecv,2048);
end;{of try}
bReadText:=true;
Socket.SendText(MP_NEXTWILLBEDATA);
pagi:=pagi+1;
end
else
begin
//'接收最后一个数据包
try
iRecvLength:=2048;
GetMem(bufRecv,3000);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv,iRecvLength);
fsRecv.WriteBuffer(bufRecv,iRecvLength); finally
FreeMem(bufRecv,3000);
end;{of try}
bReadText:=true;
Socket.SendText(MP_OVER);
showmessage('接收完毕!');
end;
if pagi < pagshu then
begin
try
iRecvLength:=2048;
GetMem(bufRecv,2048);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv,iRecvLength);
fsRecv.WriteBuffer(bufRecv,iRecvLength);
finally
FreeMem(bufRecv,2048);
end;{of try}
bReadText:=true;
Socket.SendText(MP_NEXTWILLBEDATA);
pagi:=pagi+1;
end
else
begin
//'接收最后一个数据包
try
iRecvLength:=2048;
GetMem(bufRecv,3000);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv,iRecvLength);
fsRecv.WriteBuffer(bufRecv,iRecvLength); finally
FreeMem(bufRecv,3000);
end;{of try}
bReadText:=true;
Socket.SendText(MP_OVER);
showmessage('接收完毕!');
end;
解决方案 »
- DELPHI同时插入两张不同的表的SQL语句
- delphi 2007里怎么建ActiveX Control???
- 如何打勾/取消打勾外部程序中的ListView的Item的checkbox?
- 树形数据库,生成treeview,两种办法,为什么过滤法不行?
- -==========(简单问题)关于远程数据模块单元的疑惑==================-
- 关于TQuery的简单问题,请DX指点
- 如何写代码读出.db文件相应字段的数据?谢谢
- 听说delphi 6出中文版了,那有下啊?
- 该死的文本,高手指点
- 怎样知道当前窗口是那个EXE文件运行时创建的?
- 请问从内存中把文件保存到硬盘上用那个函数
- 用d5如何考贝一个目录以及其所在目录的所有子文件及文件平一同copy
var
bufRecv : array[0..3000] of char;
begin
if pagi < pagshu then
begin
// try
iRecvLength:=2048;
fillchar(bufrecv, 3000,0);
// GetMem(bufRecv,2048);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv,iRecvLength);
fsRecv.WriteBuffer(bufRecv,iRecvLength);
// finally
// FreeMem(bufRecv,2048);
// end;{of try}
bReadText:=true;
Socket.SendText(MP_NEXTWILLBEDATA);
pagi:=pagi+1;
end
else
begin
//'接收最后一个数据包
// try
iRecvLength:=2048;
fillchar(bufRecv, 3000);
// GetMem(bufRecv,3000);//2000 must >iBYTESEND
Socket.ReceiveBuf(bufRecv,iRecvLength);
fsRecv.WriteBuffer(bufRecv,iRecvLength);// finally
// FreeMem(bufRecv,3000);
// end;{of try}
bReadText:=true;
Socket.SendText(MP_OVER);
showmessage('接收完毕!');
end;
end;
发送方是不是也不用pchar
MP_DATA:
begin
try
fillchar(bufsend, 3000,0);
if pagi < pagshu then
begin
fsSend.Read(bufSend,2048);
Socket.SendBuf(bufSend,2048);
end //普通的发送,大小为iBYTEPERSEND
else
if (fsSend.Position+1) < fsSend.Size then
begin
fsSend.Read(bufSend,fsSend.Size-fsSend.Position-1);
Socket.SendBuf(bufSend,fsSend.Size-fsSend.Position-1);
end;//最后一次发送,发送剩余的数据
finally
BEGIN
END;
end;{of try}
end;