Guten Tag,
Ich möchte gerne ein Bild über die Sockets versenden.
Hier vorerst mein Code
Client :
Delphi-Quellcode:
procedure TForm4.Timer1Timer(Sender: TObject);
var
BufSize: Integer;
s: String;
begin
Stream:=TMemorystream.Create;
Bufsize:=form1.serversocket1.socket.receivelength;
stream.size:=bufsize;
form1.serversocket1.Socket.ReceiveBuf(stream,BufSize);
Image1.picture.bitmap.loadfromstream(stream);
stream.free;
end;
Server :
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
stream:TMemorystream;
ssize:integer;
Image1 : TImage;
Dc : HDC;
Jpeg : TJPEGImage;
begin
dc := GetDc(GetDesktopWindow);
Image1 := Timage.Create(self);
Image1.Width := GetDeviceCaps(
dc,HORZRES);
Image1.Height := GetDeviceCaps(
dc,VERTRES);
BitBlt(Image1.Canvas.Handle,0,0,Image1.Width,Image1.Height,
dc,0,0,SRCCOPY);
Image1.Canvas.Brush.Style := bsClear;
Image1.Canvas.Font.Color := clred;
jpeg := TJPEGImage.Create;
jpeg.Assign(Image1.Picture.Bitmap);
Stream:=TMemoryStream.Create;
ssize:=stream.size;
Image1.Picture.Bitmap.SaveToStream(Stream);
Stream.Position:=0;
ClientSocket1.Socket.SendBuf(ssize, SizeOf(ssize));
clientsocket1.socket.sendstream(Stream);
ReleaseDc(GetDesktopWindow,
dc);
Image1.Free;
jpeg.Free;
Dabei kommt immer der Fehler :
---------------------------
Client
---------------------------
Windows socket error: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert, da der Socket nicht verbunden ist und (beim Senden über einen Datagrammsocket mit einem sendto-Aufruf) keine Adresse angegeben wurde (10057), on
API 'recv'
---------------------------
OK
---------------------------
Client und Server sind verbunden und alles...
Deshalb verstehe ich den Fehler nicht.
Was hab ich falsch gemacht ??
Mit freundlichen Grüßen,
Luckys41