Pingen auf einem Port
-
moin
ich würde gern folgendes machen:
ich hab 2 kleine programme:
programm 1: ein server der auf beliebig vielen rechnern in meinem adress-bereich liegt und auf port 11000 auf komandos horcht
programm 2: ein client der auf einem der rechner in diesem nerzwerkbereich läuft und nun die server anpingen will und wissen will an welcher ip hängt denn wirklich nur dieses programm (es gibt hier die möglichkeiten: an ip nix (false)/ an ip rechner ohne programm (false) / an ip rechner mit programm (true) )
ich habe folgendes adressbereich: 10.0.88.1 bis 10.0.88.254
ich muss herraus finden wo in diesem adressbereich diese server laufen ...und das ganze soll innerhalb von ca 1-2 sekunden ablaufen ...
also hab ich mir gedacht (also so hab ich es unter java programmiert)
ich mache 254 threads auf und lasse in jedem thread nach einer ip suchen und bekomme entweder direkt eine antwort oder ich kille den thread nach ca 2 sec und kehre mit einem false zurück (nach 2 sec wurde also nix gefunden = false)so und nu bin ich am überlegen wie ich das umsetzte ...
fragen:
1.) wie kann ich connects unterbrechen?
weil rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
mit ner antwort zeit von ca 15 sec is net wirklich gut...2.) wie bekomm ich raus über an der ip nur ein pc ohne programm ist oder ob da doch ein pc mit programm ist ?
3.) funktioniert die idee mit den 254 threads oder gibt es eine bessere möglichkeit ?
mfg LT
-
mach's so, dass der server noch auf einem udp-port lauscht. dann schickste einfach einen udp-broadcast mit speziellem inhalt los, der alle server antworten lässt. eventuell musstes ein paar mal wiederholen, um alle zu erwischen, aber sowas sollte viel schneller gehen, als 1000 tcp-connections aufzubauen.

-
@fricky: wie soll mir deine antwort weiter helfen ?
auch udps brauchen ne antwortzeit die mir viel zu groß ist noch dazu ist es bei udp net sicher ob überhaupt was angekommen ist ...also das funktioniert nicht ...
-
LordTerra schrieb:
also das funktioniert nicht ...
gut, dann vergiss es.

-
LordTerra schrieb:
auch udps brauchen ne antwortzeit die mir viel zu groß ist
und du meinst wirklich 254 threads, von denen jeder eine tcp-verbindung aufzubauen versucht wären schneller?
noch dazu ist es bei udp net sicher ob überhaupt was angekommen ist ...
deshalb sollst du den broadcast ja auch mehrfach senden. die wahrscheinlichkeit, dass 10 broadcasts in einem lokalen netz überhört werden dürfte sehr klein sein.
also das funktioniert nicht ...
näher wirst du aber an die geforderten 2 sekunden nicht rankommen. ohne broadcast wird das nix.