AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi automatisches verbinden eines konsolen-winsockclients
Thema durchsuchen
Ansicht
Themen-Optionen

automatisches verbinden eines konsolen-winsockclients

Ein Thema von ToXiC · begonnen am 20. Apr 2009 · letzter Beitrag vom 23. Apr 2009
 
ToXiC

Registriert seit: 28. Okt 2007
52 Beiträge
 
Delphi 2005 Personal
 
#1

automatisches verbinden eines konsolen-winsockclients

  Alt 20. Apr 2009, 16:46
hallöchen
ich bastel momentan an einem programm, dass falls der dazugehörige server online ist nachrichten oder ggf updates herunterläd
da die beiden programme unabhängig von einander läufen sollen möchte ich in den client einen verbindungstimer einbauen, was in einer konsole bereits die erste hürde darstellte.

nachdem ich diesen mit hilfe von dp mit hilfe von threads zum laufen bekam entstand das nächste problem.
das schlimmste ist,dass ich es noch nichtmal genau beschreiben kann.
am besten schaut ihr es euch einfach mal an.
übrigens benutze ich eine litesocket-komponete.

Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  Windows,Sockets;
type
TConnection = class
procedure Read(Sender: TObject; Socket: TCustomWinSocket);
procedure Disconnect(Sender: TObject; Socket: TCustomWinSocket);
procedure Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure Connect(Sender: TObject; Socket: TCustomWinSocket);
end;

var
Connection: TConnection;
ClientSocket: TClientSocket;
Msg: TMsg;
ThreadID: DWORD;
ThreadHandle: THandle;

procedure TConnection.Read(Sender: TObject; Socket: TCustomWinSocket);
begin
WriteLn(Socket.ReceiveText);
end;

procedure TConnection.Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
end;

procedure TConnection.Error(Sender: TObject; Socket: TCustomWinSocket;
  ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
end;

procedure TConnection.Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
end;


procedure ConThread(zahl: Pointer)stdcall;
begin
    While Not ClientSocket.Socket.Connected Do
      begin
      Sleep(500);
      Clientsocket.Open;
      end;
end;


begin
Connection := TConnection.Create;
ClientSocket := TClientSocket.Create;
ClientSocket.OnRead := Connection.Read;
ClientSocket.OnError := Connection.Error;
ClientSocket.OnConnect := Connection.Connect;
ClientSocket.OnDisconnect := Connection.Disconnect;
ClientSocket.Host := 'localhost';
ClientSocket.Port := 123;

 ThreadHandle:=CreateThread(nil, 0, TFNThreadStartRoutine(@ConThread),
  nil, 0, ThreadID);
 If ThreadHandle <> 0 Then CloseHandle(ThreadHandle);

While True Do
  Begin
  Sleep(100);
  If PeekMessage(Msg, 0, 0, 0, PM_REMOVE) Then
  Begin
  if Msg.Message <> $0012 then
    Begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
    End
  Else
    Begin
    Break;
    End;
  End;
end;
end.
im übrigen wartet der server nur mit serversocket.open.

irgentwelche vorschläge?
danke
Chris
  Mit Zitat antworten Zitat
 


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 06:03 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