unit
Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, ExtCtrls, StdCtrls;
type
TForm1 =
class
(TForm)
Image1: TImage;
Image2: TImage;
ClientSocket1: TClientSocket;
ServerSocket1: TServerSocket;
Button1: TButton;
procedure
Image1Click(Sender: TObject);
procedure
FormCreate(Sender: TObject);
procedure
ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure
ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure
ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
private
Reciving:
boolean
;
DataSize:
integer
;
Data: TMemoryStream;
public
end
;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure
TForm1
.
Image1Click(Sender: TObject);
begin
ClientSocket1
.
Active:=
true
;
end
;
procedure
TForm1
.
FormCreate(Sender: TObject);
begin
ServerSocket1
.
Active:=
true
;
end
;
procedure
TForm1
.
ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Socket
.
SendText(
'send'
);
end
;
procedure
TForm1
.
ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
var
s, sl:
string
;
begin
s:= Socket
.
ReceiveText;
if
not
Reciving
then
begin
SetLength(sl, StrLen(
PChar
(s))+
1
);
StrLCopy(@sl[
1
],
PChar
(s), Length(sl)-
1
);
DataSize:= StrToInt(sl);
Data:= TMemoryStream
.
Create;
Delete(s,
1
, Length(sl));
Reciving:=
true
;
end
;
try
Data
.
write
(s[
1
], length(s));
if
Data
.
Size = DataSize
then
begin
Data
.
Position:=
0
;
Image2
.
Picture
.
Bitmap
.
LoadFromStream(Data);
Data
.
Free;
Reciving:=
false
;
Socket
.
Close;
end
;
except
Data
.
Free;
end
;
end
;
procedure
TForm1
.
ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
var
ms: TMemoryStream;
begin
if
Socket
.
ReceiveText =
'send'
then
begin
ms:= TMemoryStream
.
Create;
try
Image1
.
Picture
.
Bitmap
.
SaveToStream(ms);
ms
.
Position:=
0
;
Socket
.
SendText(IntToStr(ms
.
Size) + #
0
);
Socket
.
SendStream(ms);
except
ms
.
Free;
end
;
end
;
end
;
end
.