Autor Beitrag
patmann2001
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: So 24.11.02 21:33 
Hallo
Also, ich habe mir ein kleines Chatprogramm geschrieben (wie so viele hier im Forum :lol: ). Das dient eigentlich nur dazu ein bisschen zu Üben mit TCP/IP. Nun klappt mein Progg ja nicht nur im LAN sondern auch im WAN und dort sind IP's nunmal meist dynamisch vergeben. (So Privat zu Privat) und nun möchte ich wissen ob man dem Client sagen kann er soll eine Nachricht an alle Server im Listenmodus senden und sie aufforden eine Verbindung zu öffen und die benötigte IP abzusenden. Ich weiss, das ich dazu beiden Programmen jeweils einen Serversocket und einen Clientsocket geben muss und das diese dann zumindest für diese Übertragung wechselseitig mal Client und mal Server sind. Das währe ja auch nicht das Problem, aber gibt es vielleicht so eine Universelle IP an die man ein Packet senden kann und alle Server im Netz bekommen es dann. Man könnte das Packet ja dann mit einem ID - Header ausstatten damit nur der Server antwortet den es angeht. Kann mir da jemand von euch helfen :?:
Würde mich echt freuen. :lol:
cu Patmann
Maledictus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Mo 25.11.02 00:31 
Ich weiss nicht ob und wie das im Internet geht, aber das was du suchst heisst Broadcast...
in einem LAN mit den IP's von 192.168.0.1 - 192.168.0.254
sendest du dein paket an 192.168.0.255, das ist die Broadcast Adresse dieses Netzes.

Ich habe mich auch schonmal mit der Problematik befasst, viel einfacher ist es, da holst dir bei w*w.dyndns.org einen Account.

Da steht alles nötige. Dann kannst du Dir umsonst domains holen,
z.B. irgendwas.dyndns.org, die dann auf deine aktuelle IP umgeleitet werden...
Da Du wahrscheinlich eine dynamische IP hast, musst du diese bei jeder Neueinwahl dyndns mitteilen.
Es gibt aber möglichkeiten das von deinem Chatprogramm erledigen zu lassen...
Ich habe das aber auch noch nicht selber gemacht...
auf dyndns.org gibt es aber sog. Clients, die das erledigen, als Quellcode, die kannst du dir ja mal reinziehen. :D

schreib mal, wenn du das gemacht hast.

Maledictus
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mo 25.11.02 14:30 
Titel: @patmann2001
Also im LAN ist das nicht das Problem. Aber im WAN musst Du das schon mit DynDns machen. Es müssen aber alle eine DynDns haben sonst geht das auch nicht. Dazu saugst Du Dir einfach DynSite das überwacht das DFÜ und gleicht bei bedarf die IP auf Deinem Alias ab. So das Du immer erreichbar bist. Funzt prima.
patmann2001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Mo 25.11.02 21:00 
Hallo Maledictus,
das mit dem Broadcast würde mir zumindest im LAN gut passen, wie muss ich da vorgehen, wenn ich meinem Client sage er soll die Broadcast IP anwählen bekomme ich einen ASynchronen Socketfehler Nr. 10060. Laut Delphi Hilfe bedeutet das, die Verbindung pausiert. Mein Server hat von der Broadcastmitteilung wohl nichts abbekommen, denn sonst hätte er eine Meldung vom OnConnect Ereigniss ausgegeben. Das kommt leider nicht. Wie bekomme ich das jetzt hin?
cu Patmann
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mo 25.11.02 21:12 
Titel: @patmann2001
warum soviel arbeit. lass doch einfach nach allen rechnern im lan - netz suchen dann bekommst den namen der rechner die kannste wenn du willst auch wieder in die ip auflösen.
patmann2001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Di 26.11.02 07:35 
Die Idea für ein kleines Netzwerk wäre gut, aber mein Netzwerk hat leider über 1000 Rechner dran, was nutzt es da, wenn ich die Namen der Rechner kenne, meinen Server habe ich dann immer noch nicht gefunden.
cu Patmann
Maledictus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 21



BeitragVerfasst: Mi 27.11.02 01:33 
@littlemike1005
wie soll das gehen, nach allen rechnern im lan zu suchen?
etwa mit enumirgendwas alle rechner auflisten, die in er netzwerkumgebung stehen?
da stehen ja so gut wie nie alle rechner drin, da windows da recht träge aktualisiert.

@patmann2001
wie das genau mit dem broadcast geht weiss ich auch nicht, hab ich noch nie gemacht...
vielleicht findest du ja mit der suchen funktion von auq.de etwas...

mfg
Male
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Mi 27.11.02 14:16 
Titel: @Maledictus
und wie ist das mit dem broadcast da geht er auch nur die ip´s durch und schaut ob ein rechner reagiert.

ich mache eine weiterbildung als holztechniker und da haben wir in der schule auch sehr viele rechner und da funz die such funktion auch gut.

oder man installiert auf dem server ein progi (was erst geschrieben werden muss is ja klar) welche anfragen von allen clients entgegen nimmt und feststellt welcher client online bzw. im netz ist. ist bei icq ja auch so.
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Do 28.11.02 03:55 
Titel: Kleine technische Erweiterung
Wollte nur mal meinen Senf dazugeben und eine kleine technische Erweiterung liefern, was die Broadcast-Adresse in einem LAN angeht...

Es reicht nicht aus, sich lediglich die IP-Adresse anzusehen, um auf die Broadcast-Adresse zugreifen zu können. Natürlich, es besteht ein Zusammenhang zwischen der IP 192.x.x.x und der Broadcast-Adresse 192.x.x.255, aber der ist nicht immer gegeben.

Um die Broadcast-Adresse 100% sicher zu erreichen muss man sich die Subnet-Maske ansehen. Alle bits, die in dieser Maske 0 sind bezeichnen den Host-Anteil der zugehörigen IP-Adressen. Setzt man diese bits in der IP-Adresse auf 1, erhält man die Broadcast-Adresse. Setzt man diese bits in der IP-Adresse auf 0, erhält man die Netzwerk-Adresse.

Es ist im IP-Protokoll definiert, dass bestimmte IP-Adressen einen bestimmten Netzwerk-Typ bezeichnen. Die IP-Adressen, die mit dem Byte 192 starten sind normalerweise Klasse-C-Netzwerke, und haben somit per Definition die Subnet-Maske 255.255.255.0, deswegen reicht es in den meisten Fällen wirklich aus, das letzte Byte auf 255 zu setzen.

Will man allerdings die Broadcast-Adresse eines Klasse-B-Netzwerkes ermitteln (die im großen LAN-Bereich auch nicht so selten sind), hätte die Subnet-Maske allerdings den Wert 255.255.0.0, demnach müssten die letzten beiden Bytes in der IP-Adresse den Wert 255 erhalten, um die Broadcast-Adresse zu bekommen...

Dies war nur ein kleiner Abstecher in die Welt der Protokolle, aufbauend auf IP. Hoffe, den Wissensdurstigen somit einen klein bisschen tieferen Einblick gewähren zu können und die Nicht-Wissensdurstigen nicht zu verwirren *gg*...

Mehr Informationen zu Internet-Protokollen und Internet-Standards im allgemeinen kann man nachschlagen unter www.rfc-editor.org/ !

Mit freundlichen Grüßen,

_____________________________________________________________
Indeterminatus.
patmann2001 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 201

Windows 7 Prof.
Delphi XE2
BeitragVerfasst: Do 28.11.02 07:19 
Erstmal danke an Indeterminatus, ich wußte zwar das meiste schon, aber ein bisschen genauer ist deine Info schon.
@littlemike1005: Ich habe ein Programm, welches auf einem Rechner gestart, alle Clients annimmt, die sich über TCP/IP verbinden wollen. Das Problem ist einfach, das die Clients die IP des Servers kennen müssen. Man kann mit TCP auch kein Packet an die Broadcastaddress schicken, denn TCP erfordert eine feste Verbindung und die gibt es über Broadcast nunmal nicht. ICQ macht das übrigends genauso, wenn Du ICQ startest ist im Programm eine feste IP eingespeichert, die einen Kontackt zu einem Server hestellt, wenn du diese IP löschen würdest, würde ICQ auch nicht mehr klappen.
Ich habe mir also Überlegt, das ich wohl ein UDP - Packet an die Broadcast schicken muss und dann mein Serverprogramm reagieren muss. Leider habe ich von UDP garkeine Ahnung. Mal sehen was ich so hier finden kann, ansonsten kann mir ja vieleicht einer helfen, denn ich brauche ja warscheinlich dafür eine Komponente die bei Delphi nicht dabei ist, oder?

cu Patmann
littlemike1005
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 187



BeitragVerfasst: Do 28.11.02 14:35 
Titel: @patmann2001
das ist über das problem. in unserm netzwerk hat der server eine feste ip. den sprechen wir an und gut ist.
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 28.11.02 20:32 
Windows benutzt für die Netzwerkumgebung nichts anders als einen Broadcast, nur leider sehr unzuverlässig! Ich würde nicht Windows' internes "guck mal nach Rechnern" benutzen, sondern es selber mit einem Broadcast realisieren.
Um dies zu tun muss, wie hier schon richtig erkannt eine verbingungslosen Protokoll wie UDP her ( TCP geht da nicht. Es ist nicht verbindungslos.). Z.B. mit der Indy Kompo TIdUDPClient und Server. Dort hat der Client sogar einen Befehl namens broadcast. Weiteres ist im Forum oder in der Hilfe zu finden.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...