我試圖使用服務器和客戶端套接字將圖片從'C:\ picture.bmp'發送到'c:\ temp \ picture.bmp' 客戶端onconnect事件處理程序如下:從客戶端發送圖片到服務器的問題
procedure TForm2.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
var
fs : tfilestream;
begin
fs := TFileStream.create('C:\picture.bmp', fmOpenRead);//picture allready exists
socket.SendStream(fs);
fs.free;
end;
和服務器onclientread爲:
procedure TForm2.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
fmm : tfilestream;
iLen: Integer;
Bfr: Pointer;
begin
iLen := Socket.ReceiveLength;
GetMem(Bfr, iLen);
fmm := TFileStream.Create('c:\temp\picture.bmp', fmCreate or
fmShareDenyWrite);
try
Socket.ReceiveBuf(Bfr^, iLen);
fmm.Write(Bfr^, iLen);
finally
FreeMem(Bfr);
fmm.Free;
end;
end;
圖片收到/創建的,但要麼是腐敗上是從來沒有收到因爲tfilestream.create方法創作的IE瀏覽器? 請幫助!我做錯了什麼?
例如https://forums.embarcadero.com/message.jspa ?messageID = 234664和https://forums.embarcadero.com/message.jspa?messageID=255358 - jeroen – 2010-07-17 20:20:03
感謝您的答案,我不知道更多的非套接字更好的非阻塞或阻塞?我仍然無法發送它可以指向除jeroen pluimers之外的其他示例,還是可以請修改我的代碼以使其工作?你是什麼意思通過sendstream一次又一次,不會從發送流開始我的意思是我無法找到像socket.sendstream中的data.position(我們可以設置爲當前位置)的任何參數....請幫助! – 2010-07-18 12:27:13
''它的返回值返回實際發送的字節數''sendstream返回發送了多少字節?是不是它只返回布爾值,即發送流後真/假? – 2010-07-18 17:15:06