Autor Beitrag
Tingeltangel-Bob
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 29.01.09 22:18 
Hallo zusammen,
Ich schreibe meine Facharbeit in Informatik über die Problematik Bilder in Delphi über Sockets zu verschicken. Und mittlerweile kann ich wirklich ein Lied davon singen was es da so an Problemen gibt. Mit viel Mühe und Not und einer Menge Hilfe habe ich es geschafft dieses Code gestückel hinzubekommen:

Server:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.FormCreate(Sender: TObject);
begin
Stream:=TMemorystream.Create;
end;

procedure TForm1.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var  BufSize: Integer;
  s: String;
begin
Bufsize:=serversocket.Socket.receivelength;
stream.size:=bufsize;
serversocket.Socket.ReceiveBuf(stream,BufSize);
ImBild.picture.bitmap.loadfromstream(stream);
stream.free;
end;


Client:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.BtConnectClick(Sender: TObject);
begin
ClientSocket.host:=EdServerIP.Text;
ClientSocket.Active:=true;
LbStatus.Caption:='Connected';
end;

procedure TForm1.BtSendClick(Sender: TObject);
var stream:TMemorystream;
begin
Stream:=TMemoryStream.Create;
Impicture.Picture.Bitmap.SaveToStream(Stream);
Stream.Position:=0;
ClientSocket.Socket.SendBuf(Stream.Size, SizeOf(Stream.Size));//Fehler:"Konstantenobjekt kann nicht als Var-Parameter weitergegeben werden"
clientsocket.socket.sendstream(Stream);
end;

Jedoch kann der Client nicht kompiliert werden.
Ich hoffe mir kann jemand weiterhelfen weil es auch zeitlich für mich langsam knapp wird. Hatte von der Thematik keine Ahnung und ich hätte nicht gedacht das das so kompliziert wird.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 29.01.09 22:39 

_________________
There are 10 types of people - those who understand binary and those who don´t.
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 29.01.09 22:52 

_________________
PROGRAMMER: A device for converting coffee into software.
Tingeltangel-Bob Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Do 29.01.09 22:59 
Danke, das sieht schonmal gut aus, werd mich da jetzt gleich einmal durcharbeiten. :-)
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 29.01.09 23:02 
Moin!

Ähm, was mir gerade so beim nochmal Drüberlesen auffällt: ich habe dir ja gar nicht gesagt, warum der Ansatz daneben ist... :oops: aaalso: ;)
user profile iconTingeltangel-Bob hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.ServerSocketClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var  BufSize: Integer;
  s: String;
begin
Bufsize:=serversocket.Socket.receivelength;
stream.size:=bufsize;
serversocket.Socket.ReceiveBuf(stream,BufSize);
ImBild.picture.bitmap.loadfromstream(stream);
stream.free;
end;
Sieht man mal davon ab, dass du die Socket-Komponenten nicht korrekt ansprichst, dann kriegst du hier nicht wie evtl. von dir erwartet die gesamte Streamlänge raus, sondern nur die Größe des gerade eingetroffenen Stücks (also max. 8kb, da der Stream in Teilstücken gesendet wird). :idea:

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.