AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Bild senden mit Sockets Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Bild senden mit Sockets Fehler

Ein Thema von luckys41 · begonnen am 12. Mär 2009 · letzter Beitrag vom 12. Mär 2009
Antwort Antwort
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
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Bild senden Fehler

  Alt 12. Mär 2009, 11:04
Hallo,

wieso fragst Du den Buffer im Server per Timer ab.
Hat der nicht ein Ereignis welches ausgelöst wird wenn
Daten beim Server ankommen?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
luckys41

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

Re: Bild senden Fehler

  Alt 12. Mär 2009, 11:36
Dankeschön, daran habe ich überhaupt noch nicht gedacht aber, Serversocket1.clientwrite gibt schon eine Nachricht aus wenn mann sich verbindet mit dem Client
  Mit Zitat antworten Zitat
luckys41

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

Re: Bild senden Fehler

  Alt 12. Mär 2009, 14:25
So hab es mal ein bisschen verändert und es kommt der gleiche Fehler immer noch :

Client :
Delphi-Quellcode:

procedure TForm1.FormCreate(Sender: TObject);
begin
Stream:=TMemorystream.Create;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var BufSize: Integer;
  s: String;
begin
Bufsize:=serversocket1.Socket.receivelength;
stream.size:=bufsize;
serversocket1.Socket.ReceiveBuf(stream,BufSize);
form4.image1.picture.bitmap.loadfromstream(stream);
stream.free;
end;
Server :
Delphi-Quellcode:
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;
  end;
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Bild senden mit Sockets Fehler

  Alt 12. Mär 2009, 14:48
Oben war Server und Client noch umgedreht.

Auch würde ich im Server Event den übergebenen Socket verwenden, statt serversocket1.Socket.

Auch 'ne ordentliche Code-Einrückung und ein sauberer Stil wären ganz hilfreich.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz