Autor Beitrag
Andreas Pfau
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 11:56 
Hallo,

ich will mir ein Tool schreiben, das es mir erlaubt, 2 über Ethernet (TCP/IP) vernetzte PCs mit nur einem Monitor zu betreiben.

Ich stelle mir das so vor, dass auf jedem PC das Tool läuft, mehrmals pro Sekunde Screenshots macht, und über Netzwerk an den anderen PC schickt, so dass auf jedem PC am Monitor ein kleines Fenster mit dem Screen des anderen PCs zu sehen ist. Besser gesagt, ist das Fenster des inaktiven PC unsichtbar, damit es nicht auf dem Screenshot erscheint.

Screenshots zu machen ist kein Problem, und ich komprimiere sie dann mit JPEG, auch kein Problem, aber wie versende ich Daten über's Netzwerk, z.B. einen Stream, wie ruft der andere PC die Daten ab? Ich habe so was noch nie gemacht, sonst würde ich ja kein neues Topic posten, bitte helft mir!

_________________
Life is a bad adventure, but the graphic is really good!
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 12:58 
Obwohl ich für solche Aufgaben eher die Indy-Komponenten verwenden würde ([url]www.nevrona.com/indy[/url]; Beispiel ist dabei):

www.delphi-forum.de/viewtopic.php?t=2632

Grüße
Florian
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 14:08 
Das mit den Sockets ist toll, sieht einfach aus.

aber was sind das für Kompos? Also wie heißt diese Socket-Kompo, welche Parameter muss ich wie setzen?

_________________
Life is a bad adventure, but the graphic is really good!
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 14:14 
Andreas Pfau hat folgendes geschrieben:
aber was sind das für Kompos? Also wie heißt diese Socket-Kompo, welche Parameter muss ich wie setzen?


Client: TClientSocket
Server: TServerSocket

Was meinst du mit Parameter? Steht alles in dem Tutorial.

Grüße
Florian
DeCodeGuru
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Sa 19.04.03 14:17 
Normalerweise findet man die in der Internet-Sparte aber seit Delphi 7 findet man diese dort nicht mehr. Allerdings kann man diese dort trotzdem noch verwenden. Man muss nur die Unit einbinden und die dann per Hand erstellen und das geht natürlich genauso gut :)

_________________
Viele Grüße
Jakob
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 14:20 
In Delphi 7 findet man meines Wissens eine Art

TTCPServer und TTCPClient (oder so ähnlich :P )

Grüße
Florian :roll:
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 14:44 
Yep, vielen Dank!

Aber @FloSch: Die Parameter stehen N-I-C-H-T im tutorial. da steht nur was von socktes. Was muss ich einstellen bei:
BlockMode
LocalHost
LocalPort
RemoteHost
RemotePort

_________________
Life is a bad adventure, but the graphic is really good!
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 14:55 
Andreas Pfau hat folgendes geschrieben:
Yep, vielen Dank!
BlockMode
LocalHost
LocalPort
RemoteHost
RemotePort


Ach Eigenschaften meinst du - das sind aber keine Parameter (oder irre ich da?! :? )!

Was für eine Komponente ist das (btw: einfach mal F1 auf die Komponente für die Online-Hilfe ;) Dort findest du auch die Erklärung der Parameter.)?

Grüße
Florian :roll:
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 19.04.03 15:15 
FloSch hat folgendes geschrieben:
Ach Eigenschaften meinst du - das sind aber keine Parameter (oder irre ich da?! :? )!

Was für eine Komponente ist das (btw: einfach mal F1 auf die Komponente für die Online-Hilfe ;) Dort findest du auch die Erklärung der Parameter.)?

Grüße
Florian :roll:
Hallo Florian,

du brauchst nicht die Augen rollen ;), denn es gibt gar keine Hilfe zu den Sockets, in der man nachschauen könnte.
Ich versuch mal soviel zu erklären, wie ich vom Netzwerk weiss:
  • Port - Ist ein Zahlenwert, der bei beiden Komponenten der selbe sein soll, da sie über diesen komunizieren. Ich würde irgend einen Port nehmen, der noch nicht belegt ist.
  • Host - Eine Zeichenkette, in der du die Ip-Adresse des Servers/Clients eintragen musst.
Ich hoffe das hilft!

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 15:22 
Hallo,

wulfskin hat folgendes geschrieben:
du brauchst nicht die Augen rollen ;), denn es gibt gar keine Hilfe zu den Sockets, in der man nachschauen könnte.


definitiv falsch! :arrow: Bei mir (D5 Prof) existiert zu TServer- und TClientSocket ein Eintrag in der OH.

Auszug aus der OH für Host:
Online Hilfe hat folgendes geschrieben:

Die Eigenschaft Host ist ein Alias für die IP-Adresse des Server-Systems.

property Host: string;

Host ist ein String, der den Domänennamen und den Dienst eines bestimmten Systems enthält, wie z.B.:
www.wSite.Com


Zitat aus der OH für Port:
Online Hilfe hat folgendes geschrieben:

Die Eigenschaft Port enthält die ID, die zur Bezeichnung der Server-Socket-Verbindung benutzt wird.

property Port: Integer;

Mit Hilfe von Port-IDs kann ein einzelnes System, das über die Eigenschaft Host oder Address bezeichnet wird, als Host für mehrere Verbindungen gleichzeitig fungieren. Viele Port-IDs sind per Konvention mit einem bestimmten Dienst (z.B. ftp oder http) verknüpft.


Grüße
Florian :roll:
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 15:29 
Sorry, ja, propertys meine ich.

OK, aber woher weiß ich, welcher Port frei ist???
Und woher weiß ich, welche IP ich verwenden muss???

Ihr müsst wissen, ich habe Nil^ Ahnung von Netzwerk!

_________________
Life is a bad adventure, but the graphic is really good!
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 15:35 
Hallo,

Andreas Pfau hat folgendes geschrieben:
OK, aber woher weiß ich, welcher Port frei ist???
Und woher weiß ich, welche IP ich verwenden muss???


Du kannst jeglichen Port > 1024 benutzen.
Bei Host (IP) gibst du den Zielrechner an, mit dem du dich verbinden willst.

Unter Windows 98 erfährst du die IP folgendermaßen:
Start -> Ausführen -> winipcfg

Unter Windows 2000 und höher in den Netzwerkeigenschaften.

Grüße
Florian :roll:
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 15:40 
OK, nur dass ich richtig verstandne habe:

Also Host nehme ich eine X-Beliebige Zahl, z.B. 2345

Für Host lasse ich den User die IP eintippen. Oder gibt's 'nen API-Call, der das für nich macht, oder zumindest 'ne Liste mit allen vernetzten PCs erstellt, dass der User wählen kann?

_________________
Life is a bad adventure, but the graphic is really good!
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 15:48 
Andreas Pfau hat folgendes geschrieben:
Also Host nehme ich eine X-Beliebige Zahl, z.B. 2345


Wenn du anstatt Host da noch Ping einfügst stimmts (bis maximal 65535 glaube ich)! :lol:

Andreas Pfau hat folgendes geschrieben:

Für Host lasse ich den User die IP eintippen.


Korrekt.

Andreas Pfau hat folgendes geschrieben:

Oder gibt's 'nen API-Call, der das für nich macht, oder zumindest 'ne Liste mit allen vernetzten PCs erstellt, dass der User wählen kann?


Hmmm, schau mal auf [url]swissdelphicenter.ch[/url]. Ich glaube da gab es mal ein Beispiel.

Grüße
Florian
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 16:49 
@FloSch:
Zitat:
Wenn du anstatt Host da noch Ping einfügst stimmts

Du meinst nicht Ping, sondern Port, gell?

OK, aber das nächste Problem wartet. Ich habe die Routine, die die Screenshots macht. Warum ist die so lahm? Es gibt doch professionelle Backdoors, die das gleiche machen, sind die auch so lahm? Das ruckelt ohne Ende. Wer kennt als eine schnelle Methode, einen Screenshot zu machen, und das ganze zu resizen?

_________________
Life is a bad adventure, but the graphic is really good!
FloSch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 129



BeitragVerfasst: Sa 19.04.03 16:58 
Andreas Pfau hat folgendes geschrieben:

Zitat:
Wenn du anstatt Host da noch Ping einfügst stimmts

Du meinst nicht Ping, sondern Port, gell?

Argh! Ja klar - sorry :lol:

Andreas Pfau hat folgendes geschrieben:

OK, aber das nächste Problem wartet. Ich habe die Routine, die die Screenshots macht. Warum ist die so lahm? Es gibt doch professionelle Backdoors, die das gleiche machen, sind die auch so lahm? Das ruckelt ohne Ende. Wer kennt als eine schnelle Methode, einen Screenshot zu machen, und das ganze zu resizen?


Ich glaube nicht das die Backdoors jedes mal Screenshots erstellen, sondern einen anderen Algorithmus anwenden oder? Ansonsten lager das Screenshot erstellen in einen eigenen Thread aus.

Grüße
Florian :roll:
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 17:01 
Feine, Sache, so ein thread, aber irgendwo ist der Wurm drin. Es Ruckelt trotzdem. Daran tüftle ich schon seit Stunden. Muss halt den Fehelr suchen.

_________________
Life is a bad adventure, but the graphic is really good!
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Sa 19.04.03 21:53 
Juhu, ich hab's! Ich habe es so gelöst, dass ich immer nur kleine Rects (1% des gesamtne Screens) übertrage, und so den Screenshot "Stückchenweise" aktualisiere. Das langt für meine Zwecke. So kann ich auch den Traffic regulieren, denn ich habe nur eine 10MBit-Verbindung :roll:

_________________
Life is a bad adventure, but the graphic is really good!
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 20.04.03 02:11 
Andreas Pfau hat folgendes geschrieben:
OK, aber das nächste Problem wartet. Ich habe die Routine, die die Screenshots macht. Warum ist die so lahm? Es gibt doch professionelle Backdoors, die das gleiche machen, sind die auch so lahm? Das ruckelt ohne Ende. Wer kennt als eine schnelle Methode, einen Screenshot zu machen, und das ganze zu resizen?
Vor langer, langer Zeit, da gab es noch das alte DF ;), hatte wir das Thema schonmal. Als Ergebnis kam heraus, dass die Übertragung in Echtzeit nur möglich ist, wenn man alle Messages weiterleitet und dann entsprechend auswertet. Zu damaliger Zeit wusste keiner wie dies funktioniert und deshalb hatte man auch keine Lösung gefunden. Vielleicht hast du ja diesesmal Glück ;)!
Aber interessantes Thema!

FloSch hat folgendes geschrieben:
definitiv falsch! Bei mir (D5 Prof) existiert zu TServer- und TClientSocket ein Eintrag in der OH.
Dann muss ich mich entschuldigen. Bei mir D5 STD gibt es leider keine Hilfe dazu. Wurde wohl vergessen :(.

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Andreas Pfau Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: So 20.04.03 11:42 
Hallo nochmal,

ich komme grade an den Netzwerkpart im code. Da ich mich damit wie gesagt kaum auskenne, habe ich auf meiner HDD rumgestöbert und ein Beipsile (Delphi\Demos\Internet\NetChat) gefunden. Aber warum haben die als Host "Localhost" eingetragen? Ich denke, dass muss eine IP sein? Oder kann man da auch den Namen des PCs eintragen (meine heißen PC1 und PC2)??? Oder ist das nur eine "Vorgabe", damit ich die IPs eintippen kann?

_________________
Life is a bad adventure, but the graphic is really good!