![]() |
Kleinere Probleme!Indy Komponente Serversocket/Clinetsocket
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 :roll: 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 :angel: Ich bin offen für verschiedene Lösungswege und bin für jede antwort Dankbar. Versteckt euch nicht vor meinen Fragen :P :duck: |
Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc
*Push*
|
Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc
Hey FileOwner!
Als ich deinen Post gelesen hab, musste ich irgendwie an mein Programm denken ;-) das macht eigentlich genau das was du programmieren willst. ( ![]() Vielleicht ein paar Tipps: Zitat:
Delphi-Quellcode:
Damit wäre die Geschichte abgehakt.
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,x,y,0,0); 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:
![]()
Delphi-Quellcode:
Sorry, wenn ich mich irre, aber das hört sich nach dem Lan.FS Commander an ;-)
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. 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:
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!
LANFSPACKAGE:=LanfsKernel.CreatePackage(Daten, RemoteIp, etc);
LanfsKernel.AddDataToQueue(LANFSPACKAGE); |
Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc
ERstmal danke für die Soruces, aber wie verknüpfe ich die befehle jetzt mit server und client, mach doch ma bitte ein beispiel ;)
|
Re: Kleinere Probleme!Indy Komponente Serversocket/Clinetsoc
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:
![]() In diesem Beispiel wird vor dem senden eine Datei in einen Filestream geladen:
Delphi-Quellcode:
Ich habe damit angefangen, hier keinen Filestream sondern nur allgemein einen Stream zu versenden.
FStream := TFileStream.Create(DateiOpenDialog.FileName, fmOpenRead);
Dabei hab ich mir ein Package definiert:
Delphi-Quellcode:
Diese Packages werden zunächst in einer Liste gespeichert, der Warteschlange.
TMyPackage:=
Record of SendStream:TStream; IP:String; end; 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:
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.
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; Danke auch nochmal an DataCool, der mir damals da etwas unter die Arme gegriffen hat!!! Grüße |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz