Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit ClientSocket (https://www.delphipraxis.net/26504-problem-mit-clientsocket.html)

fcg 24. Jul 2004 12:04


Problem mit ClientSocket
 
Hallo

und zwar habe ich ein Problem. Wenn ich folgende Code direkt indie Projektdatei ,also ohne Form etc schreibe, dann meckert er immer, das keine Verbindung zum Server besteht. Wenn ich das ganze in einer Form mit nem Button versehen funktionierts!?!

Mien Code
Delphi-Quellcode:
program client;

uses
 Windows,
  Messages,
  SysUtils,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls,
  ScktComp,
  ExtCtrls,
  Jpeg;


{$R *.RES}

var
 ClientSocket: TClientSocket;
 FStream: TFileStream;

procedure ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
   FStream := TFileStream.Create(ExtractFilePath(Application.Exename)+'screen.jpg', fmOpenRead);
   Socket.SendStream(FStream);
end;


// HAUPTPROGRAMMM

begin

  ClientSocket := TClientSocket.Create(nil);
  ClientSocket.Port := 305;
  ClientSocket.Host := '192.168.0.1';
  @ClientSocket.OnConnect := @ClientSocket1Connect;
  ClientSocket.Active := True;
 
  while 1=1 do
   begin
    Application.ProcessMessages;
   end;
end.
thÄnxX
fcg

SirThornberry 29. Jul 2004 20:30

Re: Problem mit ClientSocket
 
Ich denke der Fehler liegt darin das du
Delphi-Quellcode:
Application.ProcessMessages;
aufrufst ohne vorher
Delphi-Quellcode:
Application.Initialize;
aufzurufen

Muetze1 29. Jul 2004 23:08

Re: Problem mit ClientSocket
 
Moin!

Ein Problem habe ich dir zu dem Code schon im anderen Forum geschrieben: Du umgehst die Typenprüfung Delphi direkt und somit ignorierst du einfach ein Problem: Der versteckte Self Parameter...

Delphi-Quellcode:
@ClientSocket.OnConnect := @ClientSocket1Connect;
MfG
Muetze1

XHelp 30. Jul 2004 00:53

Re: Problem mit ClientSocket
 
Versuche mal das hier

Delphi-Quellcode:
program Project1;

uses
  Windows,
  ScktComp,
  ExtCtrls,
  Sockets,
  Messages,
  SysUtils;

type TPrg = class
  procedure CS1Connect(Sender: TObject; Socket: TCustomWinSocket);
  procedure CS1Read(Sender: TObject; Socket: TCustomWinSocket);
end;

var
  WhEvent:THandle;
  CS1:TClientSocket;
  prg: TPrg;
  m:tagMSG;


procedure TPrg.CS1Read(Sender: TObject; Socket: TCustomWinSocket);
var
  c,t:string;
begin
  c:=Socket.ReceiveText;
  MessageBox(0,PChar(t),PChar(c),MB_OK);
end;

procedure TPrg.CS1Connect(Sender: TObject; Socket: TCustomWinSocket);
begin
  CS1.Socket.SendText('Servus');
end;


begin

  prg:=TPrg.Create;
  CS1:=TClientSocket.Create(nil);
  CS1.Port:=4567;
  CS1.Address:='127.0.0.1';
  CS1.OnConnect:=prg.CS1Connect;
  CS1.OnRead:=prg.CS1Read;
  CS1.Active:=true;


  while getMessage(m,0,0,0) do begin
    if m.message=WM_CLOSE then Break;
    DispatchMessage(m);
  end;

end.
Bei mir klappt das.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 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