AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem mit WinSockets
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit WinSockets

Offene Frage von "Florian H"
Ein Thema von Florian H · begonnen am 22. Mär 2004 · letzter Beitrag vom 24. Mär 2004
Antwort Antwort
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#1

Problem mit WinSockets

  Alt 22. Mär 2004, 20:42
Hallo,

ich habe ein PRoblem mit den Sockets...
Ich sende über ein ClientSocket ein JPEG-Bild an einen Serversocket.
Jedoch wird nur bei jedem 2. Aufruf des sendens tatsächlich ein bild übertragen.
ich hab kA wieso

Mein Client-Code:
Code:
   
MS := TMemoryStream.Create;
    try
// JPEG erstelleb etc...
    jpg.SaveToStream(ms);
    MS.Position := 0;
    clientsocket2.Open;
    application.processmessages;
    clientsocket2.Socket.SendBuf(MS.Memory^, MS.Size);
    application.processmessages;
    clientsocket2.Close;
    bmp.Free;
    jpg.Free;
  finally
    MS.Free;
  end;
Der Server-Code
Code:


 type TReceiveThread = class(TServerClientThread)
  protected
    procedure Execute; override;
  end;

procedure TReceiveThread.Execute; // DIESE PROZEDUR WIRD NUR JEDES 2. MAL AUFGERUFEN...
var
  WS: TWinSocketStream;
  MS: TMemoryStream;
  GetSize: Integer;
  Buffer: array[0..8191] of Char;
  jpg : TJpegImage;
  bmp : Tbitmap;
begin

  MS := TMemoryStream.Create;
  try
    while (not Terminated) and ServerSocket.Connected do
    begin
      WS := TWinSocketStream.Create(ClientSocket, 500);
      try
        if WS.WaitForData(60000) then
        begin
          GetSize := WS.Read(Buffer, SizeOf(Buffer));
          while (GetSize > 0) do
          begin
            MS.Write(Buffer, GetSize);
            GetSize := WS.Read(Buffer, SizeOf(Buffer));
          end;
          MS.Position := 0;
         jpg := TJPEGImage.Create;
          jpg.LoadFromStream(ms);
           terminate
        end;
      finally
        WS.Free;
      end;
    end;
  finally
    MS.Free;
  end;
end;


procedure TForm1.ServerSocket2GetThread(Sender: TObject;
  ClientSocket: TServerClientWinSocket;
  var SocketThread: TServerClientThread);
begin

  SocketThread := TReceiveThread.Create(False, clientSocket);

end;
ich hoffe, einer weiß es!

grüße
dk
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von FastJack2
FastJack2

Registriert seit: 22. Mär 2004
Ort: Lübeck
54 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problem mit WinSockets

  Alt 24. Mär 2004, 09:32
... also ich verschicke meine dateien so (nicht nur jpegs):

sender:
Delphi-Quellcode:
procedure TForm1.btn_sendClick(Sender: TObject);
var
  stream:TFileStream;
begin
  try
    cli.Port := strtoint(ed_port.text);
    cli.Address := ed_ip.Text;
    cli.Open;
    stream := TFileStream.Create(ed_file.Text,fmopenread);
    cli.Socket.SendStream(stream);
  except
    me_status.lines.add('error');
  end;
end;
receiver:
Delphi-Quellcode:
var
  outstream: TFileStream;

procedure TForm1.create;
begin
  outstream := TFileStream.Create(ed_file.text,fmcreate);
end;

procedure TForm1.srvClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
  len:integer;
  rc:array [0..9999] of char;
begin
  memo1.Lines.Add('READ > '+socket.remoteaddress);
  len := socket.ReceiveBuf(rc,sizeof(rc));
  outstream.write(rc,len);
end;
ps:
Code:
cli: TClientSocket;
srv: TServerSocket;
ich weiss nicht ob es das ist, was du wolltest, da du mit threads arbeitest aber vielleicht hilft es dir weiter ...

greetz
-FastJack2
wo unrecht zu recht wird, wird widerstand zur pflicht ! (c) '98 - WoF board
  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:07 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