C
coao
Unregistered / Unconfirmed
GUEST, unregistred user!
Server端接收
try
GetMem(BufRecv,iRecvLength+1);
Socket.ReceiveBuf(BufRecv^,iRecvLength);
fsRecv.WriteBuffer(BufRecv^,iRecvLength);
finally
FreeMem(BufRecv,iRecvLength+1);
end;
bReadText:=true;
// showMessage(inttostr(i));
if fsRecv.Size>=iFileSize then
begin
socket.SendText(MP_OVER);
fsRecv.Free;
iFileSize:=0;
end
else
Socket.SendText(MP_NEXTWILLBEDATA);
Click端
MP_DATA:
begin
Memo1.Lines.Add(sTemp+' 发数据');
try
// socket.SendStream(fsSend);
GetMem(bufSend,iBYTEPERSEND+1);
if (fsSend.Position+1+iBYTEPERSEND) <= fsSend.Size then
begin
fsSend.ReadBuffer(bufSend^,iBYTEPERSEND);
Socket.SendBuf(bufSend^,iBYTEPERSEND);
end //普通的发送,大小为iBYTEPERSEND
else
begin
fsSend.ReadBuffer(bufSend^,fsSend.Size-fsSend.Position);
Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position);
// fsSend.Read(bufSend^,iBYTEPERSEND);
// Socket.SendBuf(bufSend^,iBYTEPERSEND);
// showmessage(inttostr(fsSend.Position));
end; //最后一次发送,发送剩余的数据
Label1.Caption:=Label1.Caption+' '+inttostr(fsSend.Size);
finally
FreeMem(bufSend,iBYTEPERSEND+1);
end; { end try}
采用的是自定义传输协议,一问一答式的,传输包的大小定义为2K。
问题:客户端明明已发出数据,但服务器却不接收,
现象:当传输一个5K文件时,前2*2048可以接收到,后面就不接收了,也就是说客户端发了3次,
而服务端却只接收两次。
贴出的代码中,客户端注释部分可以发送整个文件,但却是比原文件还大,里面的内容好像是
复盖了前一包的地方,而多余的地方还是前一包的东东。:(
try
GetMem(BufRecv,iRecvLength+1);
Socket.ReceiveBuf(BufRecv^,iRecvLength);
fsRecv.WriteBuffer(BufRecv^,iRecvLength);
finally
FreeMem(BufRecv,iRecvLength+1);
end;
bReadText:=true;
// showMessage(inttostr(i));
if fsRecv.Size>=iFileSize then
begin
socket.SendText(MP_OVER);
fsRecv.Free;
iFileSize:=0;
end
else
Socket.SendText(MP_NEXTWILLBEDATA);
Click端
MP_DATA:
begin
Memo1.Lines.Add(sTemp+' 发数据');
try
// socket.SendStream(fsSend);
GetMem(bufSend,iBYTEPERSEND+1);
if (fsSend.Position+1+iBYTEPERSEND) <= fsSend.Size then
begin
fsSend.ReadBuffer(bufSend^,iBYTEPERSEND);
Socket.SendBuf(bufSend^,iBYTEPERSEND);
end //普通的发送,大小为iBYTEPERSEND
else
begin
fsSend.ReadBuffer(bufSend^,fsSend.Size-fsSend.Position);
Socket.SendBuf(bufSend^,fsSend.Size-fsSend.Position);
// fsSend.Read(bufSend^,iBYTEPERSEND);
// Socket.SendBuf(bufSend^,iBYTEPERSEND);
// showmessage(inttostr(fsSend.Position));
end; //最后一次发送,发送剩余的数据
Label1.Caption:=Label1.Caption+' '+inttostr(fsSend.Size);
finally
FreeMem(bufSend,iBYTEPERSEND+1);
end; { end try}
采用的是自定义传输协议,一问一答式的,传输包的大小定义为2K。
问题:客户端明明已发出数据,但服务器却不接收,
现象:当传输一个5K文件时,前2*2048可以接收到,后面就不接收了,也就是说客户端发了3次,
而服务端却只接收两次。
贴出的代码中,客户端注释部分可以发送整个文件,但却是比原文件还大,里面的内容好像是
复盖了前一包的地方,而多余的地方还是前一包的东东。:(