Newsgroup: it.comp.lang.visual-basic
Titolo: Consiglio per un ewbie

Spero che non me ne vogliate per quesa scocciatura, ma vorrei chiedervi
qualche consiglio, vado al sodo:
Devo realizzare una sorta di server per sole comunicazioni udp, ovvero devo
gestire 'n' terminali che di punto in bianco notificano un evento.
Visto che 'n' può arrivare tranquillamente al centinaio e oltre, eche devo
gestire queste notifiche loggandole e rispondendo con adeguati pacchetti
(comandi per i terminali), avevo pensato a qualcosa tipo multi-thread, ma
non so da dove iniziare.
Qualcuno può aiutarmi con qualche consiglio o documento utile?
Spero di essere riuscito a spegare il mio "problema" e ringrazio chi avrà
voglia di rispondermi.
Ciao ciao e a presto
--
_________________________________
Penso tutto ciò che dico,
ma non sempre dico tutto ciò che penso !!

 multi-thread, ma non so da dove iniziare.
Per quanto riguarda il discorso thread, VB6 non è il massimo per queste
cose.
Personalmente ho fatto qualche prova, ma non l'ho mai utilizzato in modo
intensivo.
Prova ad utilizzare array dei controlli OCX che ti ho indicato oppure la
chiamata diretta alle API.
<x:termoPilucco>, Winsuck Wincock


Ho dimenticato di dire che purtroppo tutti i terminali lavoreranno sulla
stessa porta, qundi non so se l'array potrebe funzionare, piů winsock sulla
stessa porta mi pare facciano a cazzotti!!!
Cercherň anche per conto mio, ma se hai qualche link relativo al tuo
suggerimento di usare direttamente Winsock.dll mi farestu una grande
cortesia.
Cmq grazie per i consigli.
Ciao ciao

 cortesia.
Al momento ne sono provvisto (č da un anno che non mi captia di usare WS).
<x:termoPIlucco>

 non so da dove iniziare.
Scusa, per errore ti ho scritto anche in privato.
In VB5 con qualche salto mortale puoi far girare il prog in multithread.
In VB6 quel poco che funzionava (e male) non funziona più.
La cosa più semplice è fare in VB è un solo programma che aspetta sulla 
porta con Winsock (setti protocollo, porta lo metti in Listen) e 
all'arrivo di un evento lancia un secondo eseguibile che la elabora, 
così puoi simulare il multithread.
In alternativa, non ricordo se e come sia possibile, il secondo 
eseguibile è un ActiveX-exe, che quindi anzichè lanciarlo con Shell o 
simili lo istanzi come classe.
Se questo ActiveX è creato come multithread (ripeto non ricordo se è 
possibile farlo in VB, dai un occhio alle proprietà del progetto) le 
chiamate saranno asincrone.
Ciao

 non so da dove iniziare.
In VB la vedo ardua.
<OT mode on>
Se puoi farlo in C++ guarda qui:
http://www.codeguru.com/network/async_socket.html
E' una classe che gestisce un socket asincrono usando l' overlapped I/O. La
classe crea un thread per ogni oggetto istanziato e sfruttando l' overlapped
I/O puo' essere inserita anche in un' applicazione per console.
<OT mode off>
Ciao
Michele

In C++ ci avevo pensato, ma purtroppo salvo un leggerissima infarinatura di
base di solo C, non conosco niente, mentre con Visula Basic normalmente ci
realizzo i miei giocattoli personali e quindi riesco a muovermi meglio.
Cmq rileggendo i vostri utilissimi consigli mi č ho fatto una considerazione
prettamente pratica:
 - lavorerň con pacchetti UDP, quindi niente connessioni;
 - essendo il server il destinatario di tutti i pacchetti, questi dovranno
essere per forza di cose "serializzati",
 ergo: riceverli con un singolo Winsock non č problema.
Allora mi rimane solo da risolvere come gestire a livello di applicazione i
processi per le risposte, infatti alcuni pacchetti richiederanno solo un
ACK, altri un piccolo scambio di dati (cmq roba fino ad una 10 di
kilobytes).
Il problema č non lasciare senza risposta gli altri terminali durante lo
scambio di "grossi" quantitativi di dati con uno solo di loro, tente
presente che un terminale puň richiedere l'attenzione del server anche per
16 secondi (specifiche del terminale) durante le normali operazioni, e anche
di piů durante la riprogrammazione e l'aggiornamento dati sugli stessi.
E' durante questi tempi di attesa che ho bisogno di svolgere piů volte
contemporaneamente le stesse porzioni di codice.
Scusate il posto molto lungo, ma per fare una domanda del genere devo anche
descrivervi al meglio la situazione.