|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 207
|
C# - gestire tanti socket TCP
Buonasera.
Devo realizzare un'applicazione che interroga 100 dispositivi su rete locale (via protocollo Modbus TCP)... una sorta di polling, dal primo al centesimo ciclicamente all'infinito. Diciamo che ogni ciclo completo impiega circa 2 minuti. Qual'è la maniera più efficiente di gestire i socket in questo caso? Opzione 1 -apro la connessione TCP -interrogo il dispositivo -Chiudo la connessione TCP -Passo al prossimo dispositivo e così via Opzione 2 -Apro tutte e 100 le connessioni TCP e non le chiudo più (e mi occupo di gestire eventuali errori di comunicazione dovuti a connessione che si sono chiuse per problemi vari) Si accettano tutti i consigli |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Proverei con questa, e non dall'unico Thread ( UI ) chiamante, bensì gestendola in multi-Threading...
__________________
Contattami su FaceBook --> [ ::: MarcoGG su FaceBook ::: ] Visita il mio Blog --> [ ::: Il Blog di MarcoGG ::: ] |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Sep 2008
Messaggi: 237
|
C'e' la libreria nModbus che e' molto utilizzata, oppure per roba piu' complessa di solito si usa un Opc Server, che si occupa lui del polling e multithreading e te devi solo consumare i dati dalla cache.
Su 100 socket non so come siano le performance, fa un po' di prove. Dipende molto dall'applicazione, dalla criticita' dei dati, da che tempi di refresh vuoi etc... |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Cagliari
Messaggi: 13495
|
Boh io farei a gruppi, di 10 per esempio.
Ma bisogna anche valutare cosa deve succedere se un host ritarda la risposta, o se non risponde per niente. In quel caso blocca ritarda il polling degli altri, è accettabile?
__________________
MoBo:Asus Prime x470-Pro*CPU:AMD Ryzen 5700x*RAM:Kingston FURY KF432C16RB2K2/16*Sk.Vid:Asus DUAL-RX580-O8G*Ali:Enermax Revolution87+ 550W*Storage:Samsung 970 Evo Plus 1TB + Samsung 860 Evo 1TB*Mons:Dell 2209WAf + LG 24EA53VQ |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 207
|
Grazie per i suggerimenti
Il suggerimento di DooM1 sembra la via di mezzo migliore Il ritardo sul polling non sarebbe neanche un problema perchè posso impostare i timeout |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:21.




















