Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 02-01-2020, 11:50   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
[C] scanner internet

scrivere uno scanner per testare indirizzi IP su internet oggi è alla portata di molti però, fatti due conti mi sono detto: se testo un indirizzo ad esempio sulla porta 80 ed impiego 1 secondo, per 2^32 indirizzi impiegherei 136 anni circa e allora, come risolvere un simile problema se si vuole concludere una intera scansione in poco tempo?
Se usassi 136 PC impiegherei 1 anno, improponibile in quanto costoso.
Se usassi n thread su un singolo PC sino a saturare la banda della scheda di rete, dovrei stabilire quanti thread ci vogliono per arrivare a saturzione ma credo sempre meno di 136 quindi, impiegherei oltr 1 anno.

Idee?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2020, 14:37   #2
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3276
Scusa ma cosa pensi di saturare facendo una socket.open ? passano 4 byte in croce ( o meglio, 28 byte se prendi un pacchetto udp).
Diciamo quindi che hai banda da 1 Megabit -> 1024 KBytes = 1.024.024 bytes -> /28= 36 mila pacchetti circa (pacchetto più pacchetto meno).
Questo per quanto concerne la banda ovviamente.
Diciamo pure che un secondo va bene come limite superiore, ma anche da considerare che una chiamata possa rispondere in pochi millisecondi, facciamo una media a 500 ms e manteniamo valido un valore di 30.000 pacchetti (check) al secondo.
2^ 32 sono circa 4 miliardi di ip, che diviso 30.000 fa 143mila secondi e spicci, ovvero circa 40 ore. Che non mi sembra male come tempo.
Ma poniamo che 30.000 pacchetti siano troppi e facciamone invece un quarto, quindi 7.500 avremo come stima 160 ore che è nemmeno una settimana.

Se vuoi un test molto più empirico che teorico, fai qualche test con nmap e metti dentro una classe IP e vedi come si comporta / quanto tempo impiega.
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2020, 15:01   #3
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21914
purtroppo il calcolo non è così semplice o meglio non bisogna calcolare di saturare la banda ma bensì calcolare sulla base del tempo e del numero di connessioni concorrenti che il tuo s.o. supporta (mi pare 20 per windows 7 / 8.1)
inanzitutto un'apertura di socket impiega pochissimo tempo, altro che 500 ms direi molto più plausibile 5-10 ms ma le connessioni concorrenti comunque rimangono quindi secondo me il tuo sistema deve usare un numero di thread leggermente inferiore al massimo consentito dal tuo s.o. 19 ad esempio per windows 7

per aumentare l'efficienza non puoi assegnare a priori un numero di ip ad ogni thread visto la notevole differenza di tempo tra apertura e timeout ma direi che puoi sviluppare il tuo software con un ulteriore thread di dispatcher che carichi gli indirizzi ip nei vari thread di esecuzione bilanciandone il carico
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2020, 16:40   #4
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3276
Mi ripeto: dai un occhio all'implementazione di nmap su questa cosa.

Ad ogni modo, non mi risulta proprio che il numero di thread massimo sia 19.
Giusto il primo link saltato fuori: https://eknowledger.wordpress.com/20...ndows-process/
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 10:35   #5
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21914
Quote:
Originariamente inviato da Kaya Guarda i messaggi
Mi ripeto: dai un occhio all'implementazione di nmap su questa cosa.

Ad ogni modo, non mi risulta proprio che il numero di thread massimo sia 19.
Giusto il primo link saltato fuori: https://eknowledger.wordpress.com/20...ndows-process/
non ho parlato di un limite nei thread ma di un limite nel numero di connessioni tcp concorrenti
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 13:39   #6
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3276
Guarda che secondo me confondi. Sono 20 e riguardo le connessioni in ingresso (rif: https://community.spiceworks.com/top...nection-limits )
Interessante come il problema quindi sia più nel file descriptor che non nello stck tcp ( https://stackoverflow.com/questions/...t-a-modern-lin )
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 13:48   #7
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
grazie ad entrambi per i vostri interventi.
Quindi istanziare più di 20 thread non avrebbe senso, viste le limitazioni imposte dall'SO.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 14:21   #8
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3276
Quote:
Originariamente inviato da misterx Guarda i messaggi
Quindi istanziare più di 20 thread non avrebbe senso, viste le limitazioni imposte dall'SO.
Scusa ma non hai capito ciò che abbiamo scritto.
I thread sono una cosa, le connessioni TCP/UDP un altra.
Thread puoi averne diciamo "quanti ne vuoi", finchè non finisci la memoria
Quote:
https://superuser.com/questions/1469...-in-windows-10
My system runs out of memory a little after testlimit64 -t passes 270,000 threads created.
Il limite di 20 è un limite di LICENZA che impone Microsoft e riguarda solo le connsessioni in ingresso. (sotto linux non c'è https://unix.stackexchange.com/quest...a-linux-system )
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 14:46   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da Kaya Guarda i messaggi
Scusa ma non hai capito ciò che abbiamo scritto.
I thread sono una cosa, le connessioni TCP/UDP un altra.
Thread puoi averne diciamo "quanti ne vuoi", finchè non finisci la memoria

Il limite di 20 è un limite di LICENZA che impone Microsoft e riguarda solo le connsessioni in ingresso. (sotto linux non c'è https://unix.stackexchange.com/quest...a-linux-system )

mi riferivo appunto alle licenze di microsoft.
Se al massimo posso avere 20 connessioni TCP contemporaneamente è inutile istanziare più di 20 thread, giusto?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 14:59   #10
Kaya
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 3276
Scusa ma leggi quello che scrivo?
Si parla di CONNESSIONI IN INGRESSO, non in uscita.
Kaya è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 15:02   #11
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21914
Quote:
Originariamente inviato da misterx Guarda i messaggi
mi riferivo appunto alle licenze di microsoft.
Se al massimo posso avere 20 connessioni TCP contemporaneamente è inutile istanziare più di 20 thread, giusto?
dipende come imposti l'architettura del software io di thread ne farei ad esempio 21 se lavorassi su windows 7
1 dispatcher che carica e bilancia il carico sui diversi thread di scansione
19 thread di scansione
1 thread che raccoglie e analizza i risultati sulla base di quello che vuoi fare
devi gestire bene le strutture di memoria e i lock per aumentare l'efficienza
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 15:04   #12
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da Kaya Guarda i messaggi
Scusa ma leggi quello che scrivo?
Si parla di CONNESSIONI IN INGRESSO, non in uscita.
ops, colpa mia: pensavo in generale.
Quindi il limite è per un applicativo server e non client.
Ok, meglio così, grazie.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 15:12   #13
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da !fazz Guarda i messaggi
dipende come imposti l'architettura del software io di thread ne farei ad esempio 21 se lavorassi su windows 7
1 dispatcher che carica e bilancia il carico sui diversi thread di scansione
19 thread di scansione
1 thread che raccoglie e analizza i risultati sulla base di quello che vuoi fare
devi gestire bene le strutture di memoria e i lock per aumentare l'efficienza
ci sto già lavorando e per lo sviluppo sto usando Embarcadero di Borland. Ho già scritto tempo fa un applicativo server ma mai uno Client che istanziasse n thread quindi, devo capire bene come sincronizzare le risorse comuni.
Embarcadero ha un thread principale e se si vogliono usare i metodi che mette a disposizione tra i quali send e receive dei socket, questi devono essere sinconizzati per evitare eccezioni in maniera randomica.

Poi di problemi ne ho individuati anche molti altri, ma un passo alla volta.

Grazie 1000
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 18:28   #14
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Domanda: ma se bypassi del tutto l'interfaccia dei socket fornita dal SO e spari direttamente i pacchetti nella scheda di rete (ovviamente devi generarti a mano i vari header necessari per generare un ping).
In questo modo hai più libertà ma devi interfacciarti col driver di più basso livello (anche per leggere tutto il traffico di risposta che arriva)...
__________________
Non c'è cosa peggiore nella vita di un programmatore di un errore che si presenta solo ogni tanto.

CONCLUSO POSITIVAMENTE CON: oldfield
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 08-01-2020, 19:50   #15
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da Mettiu_ Guarda i messaggi
Domanda: ma se bypassi del tutto l'interfaccia dei socket fornita dal SO e spari direttamente i pacchetti nella scheda di rete (ovviamente devi generarti a mano i vari header necessari per generare un ping).
In questo modo hai più libertà ma devi interfacciarti col driver di più basso livello (anche per leggere tutto il traffico di risposta che arriva)...

intendi con le winsock?

forse intendeva by-passando l'SO e magari usando direttamente il driver della scheda.

Ultima modifica di misterx : 20-01-2020 alle 12:59.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2020, 20:13   #16
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12904
Quote:
Originariamente inviato da misterx Guarda i messaggi
scrivere uno scanner per testare indirizzi IP su internet oggi è alla portata di molti però, fatti due conti mi sono detto: se testo un indirizzo ad esempio sulla porta 80 ed impiego 1 secondo, per 2^32 indirizzi impiegherei 136 anni circa e allora, come risolvere un simile problema se si vuole concludere una intera scansione in poco tempo?
Se usassi 136 PC impiegherei 1 anno, improponibile in quanto costoso.
Se usassi n thread su un singolo PC sino a saturare la banda della scheda di rete, dovrei stabilire quanti thread ci vogliono per arrivare a saturzione ma credo sempre meno di 136 quindi, impiegherei oltr 1 anno.

Idee?
Beh messo così il problema è abbastanza vago.

In primis, di che protocollo stiamo parlando? Come vorresti testare le porte? Sia su UNIX che su Windows puoi usare le RAW socket per bypassare un po' di stack di rete e forse ti conviene (nota che tipicamente per usarle hai bisogno dei privilegi di root).

Proverei prima un prototipo con uno/due thread e proverei ad usare socket non bloccanti, ovvero intanto spari tutte le richieste senza aspettare, dopodiché vedi chi risponde.

Ad esempio nel caso di TCP, usando le raw socket puoi mandare pacchetti SYN a raffica con un thread e usarne un altro per leggere chi risponde (oppure banalmente usare lo stesso dopo aver finito di sparare i SYN).

Chiaramente qui non stiamo considerando eventuali monitor di sicurezza che beccano questi scanner.

Ultima modifica di WarDuck : 25-01-2020 alle 20:16.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2020, 10:35   #17
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Beh messo così il problema è abbastanza vago.

In primis, di che protocollo stiamo parlando? Come vorresti testare le porte? Sia su UNIX che su Windows puoi usare le RAW socket per bypassare un po' di stack di rete e forse ti conviene (nota che tipicamente per usarle hai bisogno dei privilegi di root).

Proverei prima un prototipo con uno/due thread e proverei ad usare socket non bloccanti, ovvero intanto spari tutte le richieste senza aspettare, dopodiché vedi chi risponde.

Ad esempio nel caso di TCP, usando le raw socket puoi mandare pacchetti SYN a raffica con un thread e usarne un altro per leggere chi risponde (oppure banalmente usare lo stesso dopo aver finito di sparare i SYN).

Chiaramente qui non stiamo considerando eventuali monitor di sicurezza che beccano questi scanner.
ciao,
il protocollo che sto usando è TCP. Uso socket bloccanti in quanto nel caso di socket non bloccanti poi dovrei gestire anche gli eventi.
A quanto ne ho capito, usando socket bloccanti il processo, nel mio caso il thread, si ferma sino a quando non arriva un qualche dato ma poi devo continuare a leggere sino alla fine di quello che mi interessa, ad esempio, nel caso di una pagina http. sino a "\r\n\r\n\".
Se istanzio fino a 30 thread e relative socket con ovviamente 30 IP diversi, mi arrivano dati, se vado oltre non mi arriva più nulla. Non mi è chiaro cosa o chi blocchi i dati in arrivo visto che sono client e gà mi è stato detto che non ci sono limitazioni in questo senso.
Quando apro una connessione invio un semplice "GET / \r\n" ed attendo risposta, se non arriva si ha timeout.
Anche l'invio dei dati non è banale, si deve capire se e quanti dati sono stati inviati ed in caso contrario inviare nuovamente.
Insomma, un bel programmino banale solo in apparenza e che fa spremere le meningi

Ultima modifica di misterx : 27-01-2020 alle 10:40.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2020, 12:17   #18
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12904
Quote:
Originariamente inviato da misterx Guarda i messaggi
ciao,
il protocollo che sto usando è TCP. Uso socket bloccanti in quanto nel caso di socket non bloccanti poi dovrei gestire anche gli eventi.
A quanto ne ho capito, usando socket bloccanti il processo, nel mio caso il thread, si ferma sino a quando non arriva un qualche dato ma poi devo continuare a leggere sino alla fine di quello che mi interessa, ad esempio, nel caso di una pagina http. sino a "\r\n\r\n\".
Se stai usando socket SOCK_STREAM normali con TCP, funzioni come read() e write() sono bloccanti. Ad esempio read() blocca se il buffer della socket è vuoto quindi non hai effettivamente dati da leggere, mentre write() non blocca mai a meno che il buffer di scrittura della socket non sia pieno.

Effettivamente più che usare socket non bloccanti una alternativa potrebbe essere quella di usare select(), poll() o nel caso di Linux epoll() che ti consentono di monitorare contemporaneamente più socket, quindi ti viene restituito il descrittore di una delle socket pronte per leggere ad esempio. Tieni presente che è proprio quello che fanno i web server più avanzati come lighttpd o nginx per gestire le connessioni.

Quote:
Originariamente inviato da misterx Guarda i messaggi
Se istanzio fino a 30 thread e relative socket con ovviamente 30 IP diversi, mi arrivano dati, se vado oltre non mi arriva più nulla. Non mi è chiaro cosa o chi blocchi i dati in arrivo visto che sono client e gà mi è stato detto che non ci sono limitazioni in questo senso.
Non mi è chiaro se stai usando Windows o Linux, comunque io credo che ai thread bisognerebbe arrivarci il più tardi possibile, perché solo con quelli la vedo difficile scalare più di tanto. Io proverei ad usare 1 thread solo e funzioni come select(), poll() o epoll() per capire quante socket riesci a gestire con tempi ragionevoli.

Quote:
Originariamente inviato da misterx Guarda i messaggi
Quando apro una connessione invio un semplice "GET / \r\n" ed attendo risposta, se non arriva si ha timeout.
Anche l'invio dei dati non è banale, si deve capire se e quanti dati sono stati inviati ed in caso contrario inviare nuovamente.
Insomma, un bel programmino banale solo in apparenza e che fa spremere le meningi
Quindi deduco tu stia in realtà cercando di scansionare se dall'altro lato ci sono server HTTP, quindi è un po' più complicato di un semplice port scanner.

Quello che in generale ti consiglio è dato un set di connessioni attive (connesse) è di mandare quante più "GET" senza aspettare la risposta, in maniera da aumentare il throughput.

Ad esempio, dato un array di socket descriptor connessi:
Codice:
int num_sockets; /* numero effettivo di socket connesse */
int opened_socket[NUM_SOCKETS];

for (int i = 0; i < num_sockets; ++i)
    write(opened_socket[i], "GET ...", sizeof..);
E poi aspettare le risposte in batch con una delle funzioni che ti ho indicato prima.

Non ho ben chiaro lo scenario comunque, devi scoprire quali porte diverse dalla 80 hostano HTTP? Oppure basta semplicemente provarti a collegare alla 80 e vedere cosa ti rispondono?

Tieni presente anche che ad oggi credo che la maggioranza dei server web usi HTTPS, che sarebbe un altro bel casino.

Ultima modifica di WarDuck : 27-01-2020 alle 12:22.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2020, 12:41   #19
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
sto programmando in Windows con Borland Builder.

Inviando quel GET desidero scoprire quanti server HTTP attivi ci sono in internet e di quale tipologia, una sorta di censimento/esperimento web.

Ero partito col singolo thread usando un solo socket ma il tempo per risolvere il problema legato ai 2^32 indirizzi IP mi ha fermato, è eccessivo; da questo limite calcolato in 136 anni è nato questo 3d.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2020, 13:25   #20
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12904
Quote:
Originariamente inviato da misterx Guarda i messaggi
sto programmando in Windows con Borland Builder.

Inviando quel GET desidero scoprire quanti server HTTP attivi ci sono in internet e di quale tipologia, una sorta di censimento/esperimento web.

Ero partito col singolo thread usando un solo socket ma il tempo per risolvere il problema legato ai 2^32 indirizzi IP mi ha fermato, è eccessivo; da questo limite calcolato in 136 anni è nato questo 3d.
Mi sembra un po' ambizioso in effetti farlo con una singola macchina usando la semplice forza bruta.

In ogni caso sarebbe interessante capire se e dove puoi arrivare prima di saturare la banda, quindi appoggio comunque la pazzia .

In realtà di quei 2^32 indirizzi ne dovresti esplorare un po' di meno perché dal mio punto di vista andrebbero escluse tutte le classi private (ad esempio il range di indirizzi tipicamente assegnati alle reti LAN). Diciamo ti risparmi poco più di 16 milioni di indirizzi, certo non sono niente in confronto ai 4 miliardi, ma comunque sempre meglio di niente.

Dopodiché partirei più in piccolo ad esempio restringendo gli IP a quelli Italiani o presunti tali. Inutile fare un censimento degli IP cinesi anche perché più ti allontani e più ti costa in termini di tempo.

Io procederei poi per passi, ad esempio, se tanto pensi di connetterti alla porta 80, tanto vale fare prima un censimento di quanti ti rispondono su quella porta.

Dal momento che tipicamente la connect() aspetta che il 3-way handshake di TCP sia completato, forse potrebbe valere la pena usare i socket raw per mandare prima un arbitrario numero di TCP SYN e vedere quanti rispondono con SYN ACK.

Cioè dal mio punto di vista come ti dicevo prima, la strategia migliore è quella di generare ed avere un numero di pacchetti in volo molto alto. Per fare questo non devi necessariamente aspettare che ti rispondano subito, ma lanciarne quanti più ne puoi e aspettare in seguito.

Il tempo di risposta del server non dipende da te, ma il tempo di generazione del pacchetto e l'invio si.

In alternativa, più semplice che usare i socket raw, puoi fare quello che ti dicevo prima quindi avere in volo tante "GET".

Non ho memoria dei socket Windows ma penso esistano funzioni che ti permettano di ascoltare gli eventi da più socket in contemporanea, stile select() o poll().

PS: mi sembra di ricordare che Windows abbia un limite per le connessioni half-opened (ovvero connessioni con SYN in attesa di SYN-ACK) quindi potrebbe essere per questo che hai problemi con più di 30 threads.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
Upgrade PC a prezzo ridotto: le migliori...
Sono i 6 smartphone migliori su Amazon: ...
Google Pixel 9a a 361€, mai così ...
Super sconti sugli spazzolini Oral-B, an...
Aspira a 6000Pa, lava bene, costa 139€: ...
Nuove scorte: torna il portatile tuttofa...
Toyota usa giochi e premi per spingere i...
HarmonyOS ha raggiunto la soglia di sopr...
Le offerte Amazon più convenienti...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:12.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v