![]() |
Daten über eigenen Port / reservierten Port schicken
Hallo!
Ich möchte zwischen zwei an ein lokales Netzwerk angebundenen Rechnern Daten hin und her schicken- Der verwendete Port ist dabei eigentlich egal, solange es nicht Port 80 ist :-). Aber ich weis nicht, wie und ob das so geht. :shock: Ich stelle mir vor, dass in Delphi-Programm 1 an Rechner 1 irgendeine Prozedur existiert, die dann ausgeführt wird, wenn über das Netzwerk von Rechner 2 mit Delphi-Programm 2 z.B. ein Zeichen (z.B. 'x') oder auch eine ganze Datei ('machwas.txt') gesendet wird. (Im Hinterkopf hab ich die Funktionsweise einer direkten seriellen Verbindung, die sich Chars Hin- und Her schickt...So mit EventChar & Co...;-) ) Kennt jemand also ein Modul oder eine Methode, um Daten von Delphi-Programm zu :arrow: Delphi-Programm übers Netzwerk zu schicken? Danke schonmal :-D |
Re: Daten über eigenen Port / reservierten Port schicken
FTP oder Sockets
Gruß |
Re: Daten über eigenen Port / reservierten Port schicken
Jaahh. Hmm. Geht das über die Indy-Komponente? :bouncing4:
|
Re: Daten über eigenen Port / reservierten Port schicken
Jooop, einer Client, einer Server.
|
Re: Daten über eigenen Port / reservierten Port schicken
ah,ok, check ich mal aus. :)
|
Re: Daten über eigenen Port / reservierten Port schicken
ALternativ kannst du auch TClientSocket und TServerSocket oder TTcpClient und TTcpServer nehmen, die alle Teil der VCL sind (von letzteren würd ich für den Einstieg aber abraten, weil sie Borlands Cross-Plattform Versuchsobjekte sind und um einiges schwerer zu handhaben). Die Socket Komponenten werden eventuell je nach Delphi-Version nicht automatisch angezeigt sind aber immer vorhanden, im Zweifelsfall unter Kombonenten -> Packages installieren die dclsocketsXXX.bpl im bin-Ordner auswählen. (XXX hängt denke ich von der Delphiversion ab.)
|
Re: Daten über eigenen Port / reservierten Port schicken
Ah, das mit den Sockets ist interessant.
Ist das Ereignis, das beim Server dann etwas auslöst, wenn der Client etwas schickt, "OnClientWrite" ? Und, was muss ich beim Client für HOST und ADRESS angeben? ..oder gibt es irgendwo dazu ein Beispielprogramm, bei dem eine enfachste kommunikation aufgezeigt ist? Ich glaube, das ist genau das, was ich brauchen, mit den Sockets !!! :-D |
Re: Daten über eigenen Port / reservierten Port schicken
Delphi-Quellcode:
Tritt ein wenn du Daten von einem Client empfangen kannst, Socket ist der Socket auf dem Daten reinkommen.
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
Delphi-Quellcode:
Tritt ein wenn der Serversocket(!) Daten senden muss. Das ist imho nur der Fall direkt nach dem Connect, wenn der neue Port dem Client bekannt gemacht wird.
procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
Socket: TCustomWinSocket); [Edit]Beim Client wird in Adress die IP des Servers eingetragen und in Host die DNS, falls du beides einträgst hat die DNS Vorang. |
Re: Daten über eigenen Port / reservierten Port schicken
Ah, Ok.
Also die Kommuniaktion funktioniert bei mir sehr gut in Richtung Client --> Server, aber nicht andersrum. Wenn ich vom Server an den Client was schicke, gibts nen Fehler. Ich hab einfach folgenden Code benutzt:
Delphi-Quellcode:
auf dem Client will ich damit empfangen :gruebel: :
ServerSocket.Socket.SendText('test');
Delphi-Quellcode:
Irgendwie muss man ja wo angeben können, an WELCHEN CLIENT der Server was schicken soll. In der Fehlermeldung steht was ähnliches...(datagrammsocket ohne adresse...)
procedure TFrmClient.ClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket); begin Memo1.Lines.Add (Socket.ReceiveText) end; Danke! |
Re: Daten über eigenen Port / reservierten Port schicken
Ah, ok habs. Wie blöd:
Delphi-Quellcode:
serversocket1.socket.connections[0].sendtext('na sie!');
Der trick ist dieses Connections[0]. :dancer: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:55 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-2025 by Thomas Breitkreuz