Autor |
Beitrag |
Andreas Pfau
      
Beiträge: 997
|
Verfasst: Do 29.05.03 17:30
Hallo,
ich bin ein absoluter Netzwerk-Neuling und arbeite mich grade in die Datenübertragung mit TCP/IP ein. Ich habe 2 Rechner miteinander vernetzt, und will einfach ein bisschen rumrüfteln. Dabei habe ich 2 Probleme:
1) Ich muss ja immer einen Port angeben. Gibt es Prozeduren, die automatisch nach dem nächsten freien Port suchen?
2) Wie kann ich alle verfügbaren Hosts auflisten lassen? Also in etwa so wie unter "Netzwerkumgebung", damit der User angeben kann, mit wem er sich evrbinden will.
Und noch was wegen den Ports: soll ich für Server und Client den selben Port verwenden oder verscheidenen nehmen? Es geht mit dem gleichen Port, aber bringt das irgendwelche Nachteile?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Do 29.05.03 18:22
Hallochen
Zu 1: Was heisst für dich ein freier Port? Einer an dem keine Anwendung lauscht oder auf welchem keine Connection nach aussen besteht? Ich denke, du siehst, dass es nicht so einfach ist, freie Ports zu finden. Deshalb gibt es -soviel ich weiss- auch keine Funktion, die dir einfach den nächsten freien Port zurückgibt.
Zu 2: Unter NT/2000/XP gibt es das. Unter 9x weiss ich es nicht (vielleicht SwissDelphiCenter?)
Zu 3: Spielt meiner Meinung nach keine Rolle.
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Do 29.05.03 18:38
Danke für den Link!
Das mit dem Port: Ich brauche doch einen FREIEN Port, oder kann ich einfach einen X-Beliebigen nehmen? Wie gesagt, ich kenne mich da kaum aus. Welchen Bereich darf ich verwenden, und spielt es eine Rolle, ob ein anderes Prog den schon benutzt?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: Do 29.05.03 18:42
Du kannst auf die Seite von Luckie gehen und Dir dort den Portscanner mal anschauen oder Du suchst Dir den Beitrag Postscanner hier aus der Freeware-Sparte raus. Dort gibt es mehrere Versionen.
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Do 29.05.03 18:44
Die ersten 1024 Ports sind eigentlich registrierte Ports und die solltest du in der Regel nicht verwenden. Hier hast du eine Aufstellung bekannter Ports. Darüber kannst du alles verwenden.
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Do 29.05.03 18:47
OK, lass' mich zusammenfassen:
- Den Port muss der User wählen, von 1025 aufwärts
- Ich kann auch dann einen Port nehmen, wenn eine andere Anwendung denselbern schon benutzt
Ist das korrekt?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
bis11
      
Beiträge: 1247
Erhaltene Danke: 2
Apple Mac OSX 10.11
|
Verfasst: Do 29.05.03 18:48
mars hat folgendes geschrieben: | Die ersten 1024 Ports sind eigentlich registrierte Ports und die solltest du in der Regel nicht verwenden. Hier hast du eine Aufstellung bekannter Ports. Darüber kannst du alles verwenden. |
Das stimmt nicht ganz, da die Ports für Datenbanken oberhalb der 1025 liegen. Deshalb aufpassen, welcher Port verwendet wird.
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Do 29.05.03 18:53
@mars: Die Methode funzt auch unter Win98. Laut WinAPI ist nur Win32s ausgeschlossen, aber das ist mir eh' egal.
@bis11: Und was haißt das Im Klartext? Ich frage nochmal: Wenn ein anderes Prog schon den selben Port verwendet, macht das was? wenn nein, könnte ich ja, sagen wir mal, 2000 als Standard nehmen, oder?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
mars
      
Beiträge: 238
Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
|
Verfasst: Do 29.05.03 19:05
Es macht was, wenn ein anderes Programm den gleichen Port schon verwendet, denn dann weiss der Server ja nicht, an welches Programm er die eintreffenden Daten weiterreichen soll.
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Do 29.05.03 19:15
OK, Danke!
Dann lasse ich also den User einen Port (> 1024) auswählen, oder wie würdest du das machen?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Do 29.05.03 19:20
Nochmal zurück zu den Clients: Meine Computer-Hosts sind "PC1" und "PC2". Die Auflist.Methode gibt aber "\\PC1" bzw. "\\PC2" zurück. Was sollen die Backslashs? Kann ich die einfach wegmachen, ich meine, ist das bei ALLEN Netzwerken so, dass einfach "\\" vor den Host kommt? Denn wenn die die als Host angebe, funzt es nicht, nur ohne Backslash.
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Do 29.05.03 21:11
Hallo,
noch 'ne Frage: Ist "LocalHost" auf jedme PC grundsätzlich definiert? Ich meine, kann ich in meine Host-Liste den LocalHost immer einfügen, oder kann es sein, dass dieser Host gar nicht existiert bzw. dass der NAme bereits an einen anderen PC vergeben ist?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
MSCH
      
Beiträge: 1448
Erhaltene Danke: 3
W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
|
Verfasst: Do 29.05.03 22:20
Andreas Pfau hat folgendes geschrieben: | Hallo,
noch 'ne Frage: Ist "LocalHost" auf jedme PC grundsätzlich definiert? Ich meine, kann ich in meine Host-Liste den LocalHost immer einfügen, oder kann es sein, dass dieser Host gar nicht existiert bzw. dass der NAme bereits an einen anderen PC vergeben ist? |
Erstmal grundsätzlich ja. Localhost ist immer da. Genauso wie 127.0.0.1.
Ich glaube, du solltest dich erst mal mit TCP/IP Netzwerken einlesen, dann ist einiges einfacher.
grez
msch
|
|
FriFra
      
Beiträge: 557
Win XP Prof, Win XP Home,Win Server 2003,Win 98SE,Win 2000,Win NT4,Win 3.11,Suse Linux 7.3 Prof,Suse Linux 8.0 Prof
D2k5 Prof, D7 Prof, D5 Standard, D3 Prof, K3 Prof
|
Verfasst: Do 29.05.03 23:06
Ich verwende folgende Funktion um Ports zu testen:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| function IsPortFree(Port: integer): boolean; var TCPClient: TIdTCPClient; begin Result := True; try TCPClient := TIdTCPClient.Create(nil); IdTCPClient1.Port := Port; try IdTCPClient1.Connect; except end; finally if IdTCPClient1.Connected = True then begin Result := False; IdTCPClient1.Disconnect; end; IdTCPClient1.DisconnectSocket; TCPClient.Free; end; end; |
Wenn Du einem Server einen Port zuweist ist es zwingend, dass am System kein 2. Server auf dem gleich Port läuft, wohingegen "unbegrenzt" viele Clients den selben Port nutzen können.
Hinweis: Der Code führt bei belegten Ports zu Fehlermeldungen im Compiler, welche aber unterdrückt werden können.
_________________ Michael
(principal certified lotus professional - developer)
|
|
w3seek
      
Beiträge: 64
Win XP; Win 2k; Suse 9.0
D5 Std, D6 Personal
|
Verfasst: Fr 30.05.03 11:48
einen freien port sucht sich die winsock automatisch, wenn du einfach auf port 0 listenst  allerdings koennen nicht alle tcp komponenten dann herausfinden welcher port das ist, das musst du dann direkt mit der winsock api machen, ist aber nicht schwer (glaube nur 1 oder 2 zeilen)
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Fr 30.05.03 11:56
Danke, ich werde eure Tipps mal probieren!
PS: @MSCH, welche Site zum "einlesen" empfiehlst du?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Fr 30.05.03 13:20
Schau mal hier nach, Andi ...
www.delphi-treff.de/...urs/index.php4?kat=2
Einfach durchlesen.
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Fr 30.05.03 17:24
Super, danke, ich werde mich mal durcharbeiten!
_________________ Life is a bad adventure, but the graphic is really good!
|
|
Andreas Pfau 
      
Beiträge: 997
|
Verfasst: Fr 30.05.03 21:19
@MaxiTB, habe mir das mal angeschaut, super Link, aber eine frage bleibt offen: Was sollen die 2 Backslashs vo den Hostnamen? Kann ich die einfach wegschneiden, will sagen, sind die GRUNDSÄTZLICH da, oder können die auch zum Hostnamen gehören? Oder, WANN werden die angezeigt?
_________________ Life is a bad adventure, but the graphic is really good!
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Mo 02.06.03 10:26
Das sind ja auch zwo poar Schuach  .
Der Doppelbackslash ist eine Windows-Notation (hat sogar irgendeinen hübschen Namen, den ich immer wieder vergesse), welche verwendet wird, um Netzwerkresourcen anzusprechen.
Also wenn du einen Computer (per LMHOST Auflösung) mit seinem Namen ansprechen willst, dann gibts du das folgendermaßen an:
\\<LMHOST-ComputerName>
Oder natürlich geht auch:
\\<LMHOST-ArbeitsgruppenName>
\\<LMHOST-DomainName>
Simpel ausgedrückt:
C: - Das Laufwerk heißt per Namen C aber laut Win-Syntax ist das Ding in einer Pfadangabe nur mit : gültig.
Gibts da Regeln wann oder wie ?
Jep - die gibts - aber wie in der Windowswelt üblich sind sie löchrig und voller Ausnahmen (mit Blick auf die API *g*) ... hat also nicht vil Sinn hier die mit Fachgelabbere breitzutreten - Fausregel: Wird ein Pfad verlangt dann mit DBS, wenn der Name verlangt wird einfach ohne. Im Notfall hilft wie so oft einfach nur ausprobieren.
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|