Nel
corso di questo articolo si porranno le basi per la definizione
dei parametri di connessione al server delle news. In particolare
tre elementi risultano necessari: il nome o l'indirizzo del
server al quale connettersi, il time-out ossia il tempo di attesa
massimo per qualsiasi tipo di comunicazione (connessione, ricezione
informazioni, invio comandi e così via) e porta di comunicazione.
Adesso
che la variabile che conterrà il nome del server delle
news è stata dichiarata, non resta altro che prevedere
nel modulo di codice di Form1 una casella di testo con la
quale l'utente finale abbia la possibilità di definirla.
Si può pertanto pensare di creare sul piano di Form1
un'area riservata alle impostazioni di connessione. Il risultato,
anticipando il contenuto dei prossimi capitoli può
essere simile a quello visualizzato in figura:
La
figura mostrata sopra si riferisce all'interfaccia sviluppata
in ambiente Visual Basic .NET ma il risultato ottenuto con
Visual Basic 6 potrà essere del tutto simile.
Se si denomina ora il pulsante presente sul piano btnConnessione,
la casella di testo in corrispondenza al nome del server 'txtServer',
quella in corrispondenza al numero di porta di connessione
'txtPorta' e per finire quella in corrispondenza al TimeOut
'txtTimeOut' si può ottenere una prima idea di quella
che sarà l'interfaccia finale dell'applicazione.
L'utente finale dovrà avere la possibilità di
scegliere i parametri di connessione fino alla fine, ossia
fino al momento in cui, premendo il pulsante btnConnessione,
tenterà una comunicazione con il server.
Pertanto solamente alla pressione di btnConnessione e quindi
allo scaturire dell'evento btnConnessione_Click si assoceranno
le scelte dell'utente alle variabili globali definite nel
modulo Modulo_Impostazioni:
|
VB6:
Private Sub btnConnessione_Click()
'controllo
dell'impostazione del nome del server da parte dell'utente
If Len(txtServer.Text)
= 0 Or Trim(txtServer.Text)
= "" Then
MsgBox("Impossibile portare a termine l'operazione."
& vbCrLf & "Indicazione del server delle
news mancante .", MsgBoxStyle.Critical)
Exit Sub
Else
'una volta passato il controllo
viene assegnato alla variabile il valore 'della casella
di testo
NomeServer = txtServer.Text
End Sub
|
VB.NET:
Private Sub btnConnessione_Click(ByVal
sender As System.Object,
ByVal e As
System.EventArgs) Handles btnConnessione.Click
'controllo dell'impostazione del nome
del server da parte dell'utente
If Len(txtServer.Text) =
0 Or Trim(txtServer.Text)
= "" Then
MsgBox("Impossibile portare a termine l'operazione."
& vbCrLf & "Indicazione del server delle
news mancante .", MsgBoxStyle.Critical)
Exit Sub
Else
'una volta passato il controllo viene
assegnato alla variabile il valore 'della casella di testo
NomeServer = txtServer.Text
End Sub |
E'
poi da notare che tutti i parametri di connessione sono opzionali,
al di fuori del nome del server (la variabile NomeServer).
In altre parole: sia nel caso del numero di porta dedicata
a NNTP sia nel caso della scelta del time-out, un valore nullo
(una stringa vuota nella casella di testo corrispondente all'opzione
di connessione) può essere facilmente sostituita da
un valore predefinito dallo sviluppatore.
A differenza del nome del server che, è importante
ripeterlo, deve essere lasciato alla scelta di chi utilizza
l'applicazione una volta compilata.
Altro
parametro di impostazione per la connessione al server delle
news è il time-out.
Con questo termine si definisce un tempo massimo di attesa
che può essere applicato in diverse occasioni. Come
ad esempio proprio durante la connessione al server delle
news: una risposta che non perviene entro un certo numero
di secondi prestabilito deve far supporre un errore di comunicazione
tra client e server oppure un'errata impostazione dei parametri
di connessione.
Il time-out è un valore opzionale nella struttura di
un newsreader in quanto in un caso limite può anche
non essere previsto affatto.
Viene tuttavia utilizzato frequentemente per evitare all'utente
finale lunghi tempi di attesa.
Questo parametro è applicabile più in generale
in tutti quei casi in cui è richiesta la risposta dal
server e generalmente viene impostato di default sui 30 oppure
sui 60 secondi.
Anche il time-out necessita di una variabile che è
utile, come nel caso del nome del server delle news, impostare
come globale.
Ed insieme alla nuova variabile TimeOut è bene dichiarara
anche la variabile di testo che conterrà la risposta
dal server.
Ecco
che pertanto il codice rispettivamente di Modulo_Impostazioni.bas
e Modulo_Impostazioni.vb si arricchisce di questi due nuovi
elementi:
|
VB6:
'IMPOSTAZIONI PER LA CONNESSIONE
AL SERVER DELLE NEWS
Public NomeServer As
String 'il nome del server
delle news a cui connettersi
Public TimeOut As
Integer 'il tempo massimo
di attesa alla risposta del server
Public Risposta As
String 'la risposta in formato
testuale ricevuta dal server
|
|
VB.NET:
Module Modulo_Impostazioni
'IMPOSTAZIONI PER LA CONNESSIONE
AL SERVER DELLE NEWS
Public NomeServer As
String 'il nome del server
delle news a cui connettersi
Public TimeOut As Integer
'il tempo massimo di attesa alla
risposta del server
Public Risposta As
String 'la risposta in formato
testuale ricevuta dal server
End Module
|
Ed
anche in questo caso è necessario lasciare all'utente
la definizione della variabile sfruttando la pressione del
pulsante btnConnessione ossia l'evento btnConnessione_Click.
A differenza però della variabile NomeServer, TimeOut
essendo opzionale verrà impostato sul valore di 30
(espresso in secondi) nel caso in cui l'utente lasci vuoto
il campo corrispondente alla casella di testo TxtTimeOut:
|
VB6
e VB.NET:
'il tempo di attesa durante la connessione
al server è invece un parametro
'opzionale' pertanto se non dovesse essere indicato,
verrà impostato
'ad un valore arbitrario: 30 secondi.
If Len(txtTimeOut.Text)
= 0 Or Trim(txtTimeOut.Text)
= "" Then
TimeOut = 60
Else
TimeOut = CInt(txtTimeOut.Text)
End If
|
La
funzione CInt che racchiude il valore della casella di testo
txtTimeOut non serve altro che a trasformare in un intero
il contenuto della TextBox che originariamente è in
formato di testo e pertanto non adatto ad essere memorizzato
all'interno di una variabile Integer com'è invece TimeOut.
Il time-out alla risposta del server sarà poi associato
ad una funzione definita come AttesaRisposta, utile come già
detto per evitare lunghi e spesso inutili tempi di attesa.
Prima di passare ad analizzarla è necessario inserire
il controllo Microsoft Winsock all'interno del progetto.
Questa operazione si compie premendo col pulsante destro del
mouse sulla casella degli strumenti che si trova sulla sinistra
dell'ambiente di sviluppo di Visual Basic .Net e scegliendo
dal menu che comparirà la voce 'Personalizza Casella
degli strumenti':
Apparirà
in questo modo la finestra che permette l'aggiunta e la rimozione
dei controlli sul piano di lavoro. Una volta selezionata la
scheda denominata 'Componenti COM' selezionare col segno di
spunta la voce Microsoft Winsock Control e chiudere la finestra
premendo il pulsante OK:
Trascinare
quindi sul piano di lavoro il controllo Winsock di cui sarà
apparsa l'icona nella scheda Dati della casella degli strumenti.
Nel caso di Visual Basic 6 invece sarà sufficiente
premere col tasto destro sul pannello degli strumenti, selezionare
Componenti dal popup menu che apparirà e dalla finestra
denominata Componenti selezionare col segno di spunta la voce
Microsoft Winsock, proprio come mostrato nell'immagine sottostante:
|