AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Kleinere Probleme!Indy Komponente Serversocket/Clinetsocket
Thema durchsuchen
Ansicht
Themen-Optionen

Kleinere Probleme!Indy Komponente Serversocket/Clinetsocket

Ein Thema von FileOwner · begonnen am 31. Mär 2008 · letzter Beitrag vom 2. Apr 2008
Antwort Antwort
FileOwner

Registriert seit: 21. Feb 2008
21 Beiträge
 
#1

Kleinere Probleme!Indy Komponente Serversocket/Clinetsocket

  Alt 31. Mär 2008, 17:15
Hallo Leute, bin jetzt schon etwas weiter mit Delphi, deshalb hab ich mir gedacht, ich sollte etwas programmieren wo von allem etwas vorkommt. Letztendlich bin ich jetzt beim RAT (Remote Administration Tool) angekommen. Ich finde das ist ein guter einstieg und das ganze macht auch ziemlich Spaß, nur hätte ich jetzt noch ein paar Fragen:
1. Ich möchte den Pc fernsteuern und deshalb brauche ich immer eine "live" übertragung vom Desktop ich bräuchte ausserdem die funktion dass, wenn ich zb auf das image klicke ( zb den start button), dass dort dann auch ein klick auf dem Remote PC ausgeführt wird.

2. Ich möchte ausserdem die Command Shell von windows einbinden bzw über den Client den "Server/RemotePC steuern"

3. Ich möchte Dateien austauschen. Ich stelle mir das so vor:
Ich sehe ein feld auf dem Alle festplatten mit unterordnern etc. gelistet werden. ich möchte dateien down und uploaden könen.

4. Vierte und hoffentlich letzte Frage Ich möchte eine Webseite auf dem Remotepc öffnen können.

Ich weiss, das sind richtig viele und warscheinlich auch für euch schwere fragen.
Aber es wäre echt klasse wenn ihr mir helft, auch wenn nicht auf alle 4 Fragen, also wenn ihr irgendwas wisst, bitte posten

Ich bin offen für verschiedene Lösungswege und bin für jede antwort Dankbar.

Versteckt euch nicht vor meinen Fragen
Wer aus dem 10. Stock springt, dem geht´s bis zum 1. auch recht gut...
  Mit Zitat antworten Zitat
FileOwner

Registriert seit: 21. Feb 2008
21 Beiträge
 
#2

Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc

  Alt 1. Apr 2008, 19:53
*Push*
Wer aus dem 10. Stock springt, dem geht´s bis zum 1. auch recht gut...
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc

  Alt 1. Apr 2008, 21:10
Hey FileOwner!

Als ich deinen Post gelesen hab, musste ich irgendwie an mein Programm denken das macht eigentlich genau das was du programmieren willst. (www.lan-fs.de)

Vielleicht ein paar Tipps:

Zitat:
1. Ich möchte den Pc fernsteuern und deshalb brauche ich immer eine "live" übertragung vom Desktop ich bräuchte ausserdem die funktion dass, wenn ich zb auf das image klicke ( zb den start button), dass dort dann auch ein klick auf dem Remote PC ausgeführt wird.
Also das "klicken" auf dem remote computer ist noch das einfachste an der Geschichte mit dem Remote Desktop. Da gibt es die Funktionen

Delphi-Quellcode:
    SetCursorPos(x,y);
    mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0);
Damit wäre die Geschichte abgehakt.
Interessanter ist die Frage

Wie schaffe ich eine Bildübertragung die möglichst in Echtzeit arbeitet

Wenn du hier im Forum ließt, findest du jede menge leute, die versuchen, eine Bildübertragung mit 25 fps zu erzeugen. Um ehrlich zu sein, bin ich froh, dass Lan.FS mit (ja nach dem, wieviel Bildinhalt sich ändert) 1-4 fps arbeitet.

Grundsätzlich musst du dir überlegen:

- Übertrage ich alle Bildinformationen, sprich das ganze Bild jedes mal neu? -> niedrige Übertragungsgeschwindigkeit

- Suche ich die Teile eines Bildes, die sich im Gegensatz zum vorherigen Bild geändert haben -> hohe CPU last.

- Komprimiere ich die Bildinformationen? -> png -> schnellere Übertragung, mehr CPU last

Lan.FS verwendet Windows Bildverarbeitungsroutinen, die (soweit ich das weiß) direkt auf der Grafikkarte arbeiten und daher relativ flott sind:

Delphi-Quellcode:
BOOL BitBlt(
  HDC hdcDest, // handle to destination DC
  int nXDest, // x-coord of destination upper-left corner
  int nYDest, // y-coord of destination upper-left corner
  int nWidth, // width of destination rectangle
  int nHeight, // height of destination rectangle
  HDC hdcSrc, // handle to source DC
  int nXSrc, // x-coordinate of source upper-left corner
  int nYSrc, // y-coordinate of source upper-left corner
  DWORD dwRop // raster operation code
);
Zitat:
2. Ich möchte ausserdem die Command Shell von windows einbinden bzw über den Client den "Server/RemotePC steuern"
Dafür musst du dir ansehen, wie man die cmd.exe piped, dazu empfehle ich dir:
http://www.delphipraxis.net/internal...t=cmd+umleiten.

Delphi-Quellcode:
3. Ich möchte Dateien austauschen. Ich stelle mir das so vor:
Ich sehe ein feld auf dem Alle festplatten mit unterordnern etc. gelistet werden. ich möchte dateien down und uploaden könen.
Sorry, wenn ich mich irre, aber das hört sich nach dem Lan.FS Commander an

Hier musst du dir so eine Art eigenen Verzeichnisbaum erzeugen. Wie man Dateien auflistet, findest du hier im Forum. Die Informationen musst du dann einfach in einem geeigneten Format speichern und übertragen.

Alles in Allem solltest du aber die Sache anders angehen. Du brauchst erstmal eine Basis zum Datenübertragen. (In meinem Fall wäre das der Lan.FS Kernel). Das ist die Schnittstelle zwischen deinem Programmteilen wie Remote Desktop und Command Shell und dem Internet/Netzwerk.

Der Lan.FS Kernel arbeitet so, dass er sich komplett um die Datenübertragung kümmert. D.h. im Programm rufst du nur noch eine Procedure auf:

Delphi-Quellcode:
LANFSPACKAGE:=LanfsKernel.CreatePackage(Daten, RemoteIp, etc);
LanfsKernel.AddDataToQueue(LANFSPACKAGE);
Ich hoffe, ich konnte dir ein bisschen weiterhelfen. Die Sache ist relativ komplex. Ich würde dir empfehlen, erstmal mit einer Art Kernel anzufangen, denn ein solides Grundgerüst ist das wichtigste!
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
FileOwner

Registriert seit: 21. Feb 2008
21 Beiträge
 
#4

Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc

  Alt 2. Apr 2008, 13:35
ERstmal danke für die Soruces, aber wie verknüpfe ich die befehle jetzt mit server und client, mach doch ma bitte ein beispiel
Wer aus dem 10. Stock springt, dem geht´s bis zum 1. auch recht gut...
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc

  Alt 2. Apr 2008, 15:54
Naja, du bastelst dir wie gesagt erstmal so eine schnittstelle, die die Datenübertragung per INDY verwaltet. Das sind aber nicht mal eben so 5 zeilen. Grundsätzlich kannst du so Dateien verschicken:

http://www.delphipraxis.net/internal...ct.php?t=61806

In diesem Beispiel wird vor dem senden eine Datei in einen Filestream geladen:

FStream := TFileStream.Create(DateiOpenDialog.FileName, fmOpenRead); Ich habe damit angefangen, hier keinen Filestream sondern nur allgemein einen Stream zu versenden.
Dabei hab ich mir ein Package definiert:

Delphi-Quellcode:
TMyPackage:=
Record of
      SendStream:TStream;
      IP:String;
end;
Diese Packages werden zunächst in einer Liste gespeichert, der Warteschlange.

Die Indyserver/clients sind bei mir gethreaded, also laufen in einem separaten Thread um unabhängig vom restlichen Programm zu sein. Bei dem Executeereigniss des Threads wird die Warteschlange abgearbeitet:

Delphi-Quellcode:
procedure MySendingThread.Execute
begin

MyPackage:=GetNextPackageFromQueue;

TCPSender.Host:=MyPackage.IP;

  try
    IDS := TidStreamVCL.Create(MyPackage.Sendstream);
    try
      { Senden }
      with TCPSender do
      begin
        Connect;
        try
          Socket.Write(IDS, 0, true);
        finally
          Disconnect;
        end;
      end;
    finally
      FreeAndNil(IDS);
    end;
  finally
    FreeAndNil(FStream);
  end;
end;


end;
Der Code wird so noch nicht funktionieren, weil er jetzt nur ausm Kopf geschrieben und nicht getestet ist. Er soll ja auch nur die Idee dahinter aufzeigen. Vielleicht gibts bessere Lösungen, aber ich bin bis jetzt ganz gut damit gefahren.
Danke auch nochmal an DataCool, der mir damals da etwas unter die Arme gegriffen hat!!!

Grüße
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  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 04:40 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