2Danke
ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
814
814
EMPFEHLEN
-
16.07.10 21:30 #1
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Hallo,
folgender Code:
Code c++:1 2 3 4 5 6 7 8 9 10
struct timeval timeout; timeout.tv_sec = 2; if(tim > 50 && tim < 120 * 1000) // tim ist ein int und kommt als Benutzer-Eingabe { timeout.tv_sec = 0; timeout.tv_usec = tim * 1000 * 1000; } select(......, timeout);
Anscheinend werden die Microsekunden-Angaben vollkommen ignoriert. Kann mir jemand sagen, was ich falsch mache?Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
16.07.10 21:33 #2
Woher weißt du, dass die Mikrosekunden ignoriert werden bzw. wie ist die Funktion select definiert?
mfg ComFreek
Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
[PHP] Überprüfen, ob Website erreichbar • Sicherheit in PHP-Codes schaffen • Google Chrome-Extension für tutorials.de • json_compress()
-
select bezieht sich wohl auf die Winsockets.
Wegen dem Timeout fällt mir aber nichts ein.
-
Hallo,
kannst du mal ein Minimalbeispiel posten was bei dir nicht tut? Welches Betriebssystem verwendest du? In Linux liegt die Timerauflösung für select AFAIK im Jiffies Bereich. D.h. ist dein Linuxkernel bspw. mit HZ=250 kompiliert würde select mit einer Auflösung von 4ms arbeiten...
Gruß,
RedWing"I'm not deaf, I'm ignoring you"
----
-
Wieso lässt du werte >= 1000 für "tim" zu? Dann solltest du vielleicht sowas machen:
Code c:1 2
timeout.tv_sec = tim / 1000; timeout.tv_usec = (tim % 1000) * 1000 * 1000;
Und wenn ich mich recht erinnere, erwartet select einen pointer auf ein timeval. also select(..., &timeout);
-
17.07.10 14:19 #6
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Ok, hier ist der komplette Code:
<Code aus rechtlichen Gründen entfernt>
Und falls hier einer denkt, das wäre illegal: Das Tool soll in der Firma eingesetzt werden um zu prüfen, ob von bestimmten Rechnern bestimmte Ports erreichbar sind für Monitoring- und Debugging-Zwecke
Geändert von saftmeister (17.07.10 um 18:12 Uhr)
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Und wieso verwendet ihr dazu nicht einfach ein frei verfügbares, ausgiebig getestetes Tool wie Nmap? Hast du abgesehen davon den Vorschlag von OnlyFoo schon ausprobiert?
Grüße,
Matthias„Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
“For every complex problem, there is an answer that is short, simple and wrong.”
“Pessimism is safe, but optimism is a lot faster!”
Aktuelles Coding Quiz: #17 - Wörter kreuz und quer
-
17.07.10 17:03 #8
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Weil das nicht gestattet wird. Wir hätten dafür genauso gut telnet verwenden können, wenn es gestattet wäre, es zu installieren. Das bekommt man nicht durch die Security-Abteilung...
Ja hab ich. Es war mir gleich klar, das es nicht funktioneren kann. tv_sec ist vom Typ long, das Teilen von 500 durch 1000 kommt nach Adam Riese auf 0,2, was durch den long-Typ auf 0 gesetzt wird. Der restliche Teil der Kalkulation macht nur eines: das Resultat verfälschen. Hier mal ein Beispiel (moon ist mein Test-Host):
EDIT: Das Resultat wird nicht verfälscht, ich ziehe diese Aussage zurück. Aber das Resultat sollte das gleiche sein, wie mein erster Code.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
[root@localhost ~]# time { ./porttest -i moon -p 90 -v -t 500; } resolved address: 192.168.178.33 timeout is 0 seconds, 500000000 useconds Connection refused real 0m1.008s user 0m0.000s sys 0m0.006s [root@localhost ~]# time { ./porttest -i moon -p 80 -v -t 500; } resolved address: 192.168.178.33 timeout is 0 seconds, 500000000 useconds Success real 0m0.018s user 0m0.001s sys 0m0.005s [root@localhost ~]# time { ./porttest -i moon -p 80 -v -t 250; } resolved address: 192.168.178.33 timeout is 0 seconds, 250000000 useconds Success real 0m0.021s user 0m0.000s sys 0m0.006s [root@localhost ~]# time { ./porttest -i moon -p 90 -v -t 250; } resolved address: 192.168.178.33 timeout is 0 seconds, 250000000 useconds Connection refused real 0m1.009s user 0m0.000s sys 0m0.007s
Das ist übrigens mit dem Code von onlyfoo getestet. EDIT: Port 80 ist erreichbar, Port 90 nicht.
Grüße und trotzdem Danke an alle, ich hab so langsam das Gefühl, das kann derart nicht gelöst werden. Ich werde mir mal pselect() ansehen.Geändert von saftmeister (17.07.10 um 17:16 Uhr) Grund: Richtigstellung
Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
Okay hab deinen Fehler.
tim ist bereits in Milisekunden, also muss nur noch mit 1000 multipliziert werden, um Mikrosekunden zu erhalten:
Code c:1 2 3 4 5
if(tim >= MINIMAL_CONNECTION_TIMEOUT && tim <= MAXIMAL_CONNECTION_TIMEOUT) { timeout.tv_sec = tim / 1000; timeout.tv_usec = (tim % 1000) * 1000; }
Und 500 / 1000 ist übrigens nicht 0.2... Und die Rechnung macht schon sinn. Spiel das mal für tim = 2500ms durch
olli@laptop:/tmp$ time ./a.out -i google.de -p 1234 -v -t 2500
resolved address: 209.85.229.104
timeout is 2 seconds, 500000 useconds
Connection timed out
real 0m2.525s
user 0m0.000s
sys 0m0.000s
-
17.07.10 18:10 #10
- Registriert seit
- May 2006
- Ort
- There is no place like 127.0.0.1
- Beiträge
- 3.516
Du hast recht, ich hab mich bei den Einheiten verhaspelt. Außerdem hast du recht, es sind 0,5

Desweiteren habe ich mich schon korrigiert, deine Rechnung ist korrekt.
Danke also noch mal...Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
Ähnliche Themen
-
select-box1 ändern -> select-box2 nimmt selben wert na
Von The_MACman im Forum Javascript & AjaxAntworten: 3Letzter Beitrag: 15.06.06, 00:34 -
Select Inhalt und Sichtbarkeit abhängig von vorhergehendem Select
Von LongDonJohn im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 07.04.06, 12:01 -
Nach select neues select per mysql eingrenzen
Von CrushLog im Forum PHPAntworten: 8Letzter Beitrag: 18.05.05, 15:43 -
Timeout
Von twisthead im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 22.03.05, 18:28 -
neues Select nach select aus mysql
Von mrbong im Forum PHPAntworten: 15Letzter Beitrag: 14.10.04, 00:05






Zitieren


Login






