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



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 238

Debian Woody, Win 2000, Win XP
D7 Ent, Kylix 3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
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
BeitragVerfasst: Do 29.05.03 23:06 
Ich verwende folgende Funktion um Ports zu testen:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 64

Win XP; Win 2k; Suse 9.0
D5 Std, D6 Personal
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: Fr 30.05.03 11:56 
Danke, ich werde eure Tipps mal probieren! :D

PS: @MSCH, welche Site zum "einlesen" empfiehlst du?

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

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 997



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 679

Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
BeitragVerfasst: 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.