Einzelnen Beitrag anzeigen

luckys41

Registriert seit: 9. Feb 2009
20 Beiträge
 
#1

Bild senden mit Sockets Fehler

  Alt 12. Mär 2009, 09:55
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
  Mit Zitat antworten Zitat