全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1490
推到 Plurk!
推到 Facebook!

我的 scoket 为什么不能把图片传过去,我是错在哪里?谢谢!

 
npsgsys
一般會員


發表:12
回覆:0
積分:2
註冊:2007-03-02

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-03-22 17:11:29 IP:125.89.xxx.xxx 訂閱
请教:
服务器端:
unit Unit1;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;

type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Open;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
filename:string; //ini 文件路径
mystream: TMemoryStream; //流
buffer : array of byte;
len:longint;
begin
filename:=ExtractFilePath(paramstr(0)) '2.bmp';
mystream :=TMemoryStream.Create;
mystream.LoadFromFile(filename);
len:=mystream.Size;
setlength(buffer,len);
mystream.Seek(0,soFromBeginning);
mystream.Position:=0;
mystream.Write(buffer[0],len);
ServerSocket1.Socket.Connections[0].SendBuf(buffer[0],len);
end;

end.

客户端:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, ExtCtrls;
type
TForm1 = class(TForm)
Image1: TImage;
ClientSocket1: TClientSocket;
procedure FormCreate(Sender: TObject);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
ClientSocket1.Open;
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
len:longint;
rev : Longint;
mystream:TMemoryStream;
buffer : array of byte;
b:tbitmap;
begin
b:=tbitmap.Create;
len:=Socket.ReceiveLength;
setlength(buffer,len);
rev:=Socket.ReceiveBuf(buffer[0],len);
mystream:=TMemoryStream.Create;
mystream.Seek(0, soFromBeginning);
mystream.Position:=0;
mystream.Write(buffer[0],len);
b.LoadFromStream(mystream);
Image1.Picture.Bitmap.Assign(b);
b.Free;
end;
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
end;
end.

单击 Button1 ,客户端 没有图片显示出来
我的图片是小于 64KB 的,我传字符串是可以传的
各位大哥,我是错在哪里啊?
谢谢!
------
帮助别人的同时自己会得到更大的快乐——因为我们都是delphi的爱好者!!
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-03-26 17:48:17 IP:59.124.xxx.xxx 未訂閱
加紅色那一行試試:

procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
len: LongInt;
rev: LongInt;
mystream: TMemoryStream;
buffer: array of byte;
b: TBitmap;
begin
b:=tbitmap.Create;
len:=Socket.ReceiveLength;
setlength(buffer,len);
rev:=Socket.ReceiveBuf(buffer[0],len);
mystream:=TMemoryStream.Create;
mystream.Seek(0, soFromBeginning);
mystream.Position:=0;
mystream.Write(buffer[0],len);
mystream.Position := 0;
b.LoadFromStream(mystream);
Image1.Picture.Bitmap.Assign(b);
b.Free;
end;
系統時間:2024-05-04 21:49:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!