Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphianwendungen verbinden (https://www.delphipraxis.net/79736-delphianwendungen-verbinden.html)

juezi 27. Okt 2006 10:05


Delphianwendungen verbinden
 
Hallo Zusammen,

ich wollte mal nachfragen ob es eine einfache Möglichkeit gibt 2 Anwendungen (programmiert in Delphi 7 Pro)die auf 2 verschiedenen Rechner laufen zu verbinden. Es wird in der einen Anwendung etwas eingelesen (Barcode) und soll über das Netzwerk auf einem anderen Rechner abgelegt werden.

Vielen Dank im Voraus

juezi

mkinzler 27. Okt 2006 10:06

Re: Delphianwendungen verbinden
 
Ja natürlich z.B. mit Sockets.

juezi 27. Okt 2006 10:11

Re: Delphianwendungen verbinden
 
Hallo,

zuerst danke für die schnelle Antwort, kann ich bei diesen Sockets auf dem einen Rechner einen SocketServer laufen lassen der
immer wieder abfragt ob der Client schon da ist und wenn ja eine bleibende Verbindung aufbauen?

Danke

juezi

mkinzler 27. Okt 2006 10:14

Re: Delphianwendungen verbinden
 
Normalerweise wendet sich der Clienzt an den Server und nicht umgekehrt.
Was meinst du mit abgelegt?

juezi 27. Okt 2006 10:19

Re: Delphianwendungen verbinden
 
Hallo,

mit ablegen meine ich das an einem Rechner 2 Barcodes eingescannt werden, diese beiden Barcodes werden dann mit einer Datenbank verglichen und wenn diese beiden Barcodes zusammenpassen, sende ich die beiden Barcodes an einen anderen Rechner. Von diesem anderen Rechner aus gebe ich dann eine Freigabe an eine Produktionsanlage.

Danke

mkinzler 27. Okt 2006 10:25

Re: Delphianwendungen verbinden
 
Dann würde ich den Server auf dem Rechner der die Freigabe ergibt einrichten. Der Cleint wendet sich dann bei Bedarf an den Server.

juezi 27. Okt 2006 10:27

Re: Delphianwendungen verbinden
 
kann ich vom Server auch Text an den Client senden oder geht das nur in die Richtung des Servers.

Danke

Hansa 27. Okt 2006 10:36

Re: Delphianwendungen verbinden
 
Zitat:

Zitat von juezi
Es wird in der einen Anwendung etwas eingelesen (Barcode) und soll über das Netzwerk auf einem anderen Rechner abgelegt werden...

...und zwar am besten in einer Datenbank. Soll die DB, die die Barcodes enthält, nicht beeinflußt werden, dann lege eben noch eine an.

mkinzler 27. Okt 2006 10:37

Re: Delphianwendungen verbinden
 
Ja,
http://www.dsdt.info/tutorials/indy/
http://www.dsdt.info/tutorials/indy/?page=2
http://www.dsdt.info/tutorials/winsocket/

juezi 27. Okt 2006 11:06

Re: Delphianwendungen verbinden
 
Hallo,

ich hab noch eine Frage, wenn ich vom Client aus den Server abfragen ob er aktiv ist?
Ich habs probiert mit
Delphi-Quellcode:
procedure TfrmClient.Timer1Timer(Sender: TObject);
begin
  if ServerSocket1.Active = true then
      begin
        ClientSocket1.Socket.SendText('Barcode IO');
      end;
end;
aber mein Client erkennt nicht das der Server aktiv ist, wenn ich mit einem Button
Delphi-Quellcode:
  ClientSocket1.Socket.SendText('Barcode IO');
direkt ausführe funktioniert das, der Server erhält den String, daher denke ich das der Server aktiv ist.

Danke

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

ScotsMan 1. Nov 2006 07:42

Re: Delphianwendungen verbinden
 
Hallo, erstmal.

Der Client kann nix vom Server wissen, deshalb geht das so nicht. Der Client weiss aber, ob er zum Server verbunden ist. Die Abfrage muesste also demzufolge

Delphi-Quellcode:
if ClientSocket1.Connect(ed) then
heissen, denke ich.
MfG

robinWie 1. Nov 2006 08:53

Re: Delphianwendungen verbinden
 
Zitat:

ich hab noch eine Frage, wenn ich vom Client aus den Server abfragen ob er aktiv ist?
wenn du mit dem Client eine verbindung startest gibt es einen Fehler, wenn der Server nicht aktiv ist.
Man könnte das ungefähr so lösen:
Delphi-Quellcode:
try
 ClientSocket1.Active := True;
except
 { Ereignis, das eintretten soll, wenn Server nicht aktiv ist }
end;
Wenn du nur wissen willst ob der Server PC läuft, kann man das mit einem Ping herausfinden

Delphi-Quellcode:
function Ping(IP:string; TimeOut:Cardinal):Boolean;
  var hICMP                          : DWORD;
      pierWork                       : PICMP_ECHO_REPLY;
      dwSize                         : DWORD;
      Class1,Class2,Class3,Class4     : String;
      i,j                            : Byte;
begin
  Result:=False;
  j:=1;
  for i:=1 to Length(IP) do begin
    if IP[i]<>'.' then begin
      case j of
        1: Class1:=Class1+IP[i];
        2: Class2:=Class2+IP[i];
        3: Class3:=Class3+IP[i];
        4: Class4:=Class4+IP[i];
      end;
    end else
      Inc(j);
  end;
  hICMP := IcmpCreateFile;
  if hICMP = INVALID_HANDLE_VALUE then exit;
  try
    dwSize  := SizeOf(ICMP_ECHO_REPLY)+8;
    pierWork := AllocMem(dwSize);
    try
      if IcmpSendEcho(hICMP,MAKELONG(MAKEWORD(StrToInt(Class1), StrToInt(Class2)),MAKEWORD(StrToInt(Class3), StrToInt(Class4))),nil,0,nil,pierWork,dwSize,TimeOut) = 0 then
        Result:=False
      else
        Result:=True;
    finally
      FreeMem(pierWork,dwSize);
    end;
  finally
    IcmpCloseHandle(hIcmp);
  end;
end;

juezi 2. Nov 2006 06:00

Re: Delphianwendungen verbinden
 
Hallo Zusammen,

Danke für Eure Hilfe, ich denke ich kann mit den beiden Funktionen mein Problem beheben, ich werde zuerst mit ping testen ob der andere PC überhaupt aktiv ist und dann kann ich sehen ob der Client connected ist.

Vielen Dank

juezi


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