senden und empfangen eines Broadcast
-
N'Abend!
Ich schreibe eine Server-Client Software mit Borland C++ Professional in der Version 5.0.
Das Clientprogramm soll per Broadcast ermitteln können wieviele Server (und deren Adressen) momentan im Netzwerk verfügbar sind.Für die Kommunikation zwischen Server und Client verwende ich TClientSocket und TServerSocket - das funktioniert problemlos (wenn ich die Serveradresse weiss). Wenn ich aber versuche eine Broadcast-Adresse wie z.B. Socket->Address = 192.168.10.255 dann bekomme ich einen ESocketError: Ungültige Adresse.
Habt Ihr eine Idee wie ich einen Broadcast senden kann (am liebsten mit einer Borland-Komponente *g*)? Und was muss ich anstellen, damit mein Client auch darauf reagiert, also die Nachricht empfängt? Vielleicht ein kleines Code-Beispiel?
Danke für die Info!

-
Broadcasten geht meines Wissens nur über UDP.... ?
-
SeboStone schrieb:
...Das Clientprogramm soll per Broadcast ermitteln können wieviele Server (und deren Adressen) momentan im Netzwerk verfügbar sind...
sollte das nicht anders rum sein? ich meine: ein serverprogramm und viele clientprogramme?
-> in diesem fall brauchen die client"programme" nur eine "server"-adresse zu kennen. diese client"programme" verbinden sich mit dem server"programm", und dann kannst du mittelsSocket->ActiveConnections Socket->Connections[] Socket->RemoteHost Socket->RemoteAddressdie verschieden informationen sammeln.
schau dir mal das chat-beispiel im examples-verzeichnis von bcb an.
-
Nein, das ist genau richtig rum. In meiner Anwendung gibt es mehrere Server und nur wenige Clients. Richtig ist, dass man das auch anders rum sehen kann, also Server = Client und umgekehrt. Aber keine der IP-Adressen ist bekannt, es ist keine feste Installaion, sondern eine dynamische Geschichte die an jedes Netzwerk angeschlossen werden kann.
Das Chat-Beispiel kenne ich natürlich schon und wie gesagt, die Kommunikation ziwschen den Clients und Server funktioniert tadellos, vorausgesetzt ich kenne deren Adressen. Das Chat-Beispiel geht ebenfalls davon aus, einen Broadcast sendet das Ding nirgends.
Richtig, so kann ich Informationen sammeln, nur weiss ich die vorher schon, sonst hätte ich keine keine Verbindung aufbauen können - ist also sinnlos.
Also, wie schaffe ich es einen Broadcast in ein LAN zu schicken und diesen auch zu empfangen?
-
SeboStone schrieb:
Also, wie schaffe ich es einen Broadcast in ein LAN zu schicken und diesen auch zu empfangen?
Antwort:
junix schrieb:
Broadcasten geht meines Wissens nur über UDP.... ?
Ergo solltest du dir mal UDP-Komponenten ansehen (z.B. die von Indy)
-
PuppetMaster2k schrieb:
SeboStone schrieb:
Also, wie schaffe ich es einen Broadcast in ein LAN zu schicken und diesen auch zu empfangen?
Antwort:
junix schrieb:
Broadcasten geht meines Wissens nur über UDP.... ?
Ergo solltest du dir mal UDP-Komponenten ansehen (z.B. die von Indy)
*dz* ich sollte wirklich an meiner Antwortart arbeiten. Ich kann ja nicht erwarten, dass meine Frage deine Aussage impliziert *abmirselberdenkopfschüttel*

-junix
-
Alles gut und schön, richtig Broadcast laufen auf UDP nicht TCP - logischerweise.
Richtig Indy wäre eine Lösung, nur dummerweise hat Borland C++ Professional 5.0 noch keine Indy-Komponenten. Wegen dem ganzen Linzensscheiss muss ich leider auch auf der 5.0 Version bleiben.Momentan versuche ich es über TNMUDP. Hat jemand Erfahrung damit? Habe damit nämlich Probleme, weil die Borland Hilfe nicht wirklich hilft, z.B. meint die Hilfe es wären nur 2 Parameter, in Wirklichkeit sind es aber 3! Was für ein Scheiss! Die Borland C++ 5 ist nicht gerade Bugfrei. *mpf*
-
Indy gibts auch als "AddOn" Packet zum Download.
-
benutz' doch die einfachen winsock-apis. damit kann man ganz einfach broadcasts senden und empfangen
-
Ich habe mit Winsock keine Erfahrung und habe dafür auch keine Beispiele oder Infos gefunden.

Juhu! Man lernt doch nie aus!
Danke für die Info! Für alle mit demselben Problem: Download unter http://www.indyproject.org/download/index.iwpIch habe nur ein Problem:
Es steht zwar da, dass die Komponenten auch für den C++ Builder funktionieren, aber ich bekomme die nicht installiert - sind halt nur Delphi Files. Auf der Indy-Site steht als Installationshinweis nur folgendes:
Delphi / BCB Installation
Open and compile in the following order:
IndySystem (in Lib\System)
IndyCore (in Lib\Core)
IndyProtocols (in Lib\Protocols)
IndySuperCore (in Lib\SuperCore)
If you are not using SuperCore, then you do not need to compile this
package.Klasse, wie zum Geier compiliert man mit dem BCB nun Delphi-Files? Oder bin ich total blöde? (wehe einer schreibt ja!)

Hat jemand eine Idee oder ein Tutorial? Danke!
-
...
-
Bitte beim Thema bleiben!
Zur Indy-Installation gibt es hier bereits etliche Threads.
-
Richtig, hier gibt's einige Threads aber keiner ist beantwortet!
Hat wirklich keiner eine Idee wie man die Indy Delphi Codes im BCB "installiert"?
-
Du legst es darauf an, oder?
Also nochmal im Klartext: Diskussionen zur Installation von Indy oder anderen Komponenten haben in diesem Thread nichts verloren, und werden, wie andere OT-Beiträge auch, kommentarlos gelöscht.