Newsgroup: it.comp.lang.visual-basic
Titolo: whois client in vb.net

Ho fatto questo piccolo programmino per recuperare le informazioni dai
server whois, funziona, solo che non recupera tutto ma solo la parte
iniziale.
Qualcuno di voi sa dirmi il perche'?
______________________________________________________
Dim tcpClient As TcpClient = New TcpClient()
txtRisultato.Text = ""
Try
            tcpClient.Connect("
whois.nic.it
", 43)
            Dim networkStream As NetworkStream = tcpClient.GetStream()
            If networkStream.CanWrite Then
            Dim sendBytes As [Byte]() =
Encoding.ASCII.GetBytes(txtDominio.Text + vbCrLf)
            networkStream.Write(sendBytes, 0, sendBytes.Length)
            Else
                tcpClient.Close()
                Return
            End If
            If networkStream.CanRead Then
            Dim bytes(tcpClient.ReceiveBufferSize) As Byte
            networkStream.Read(bytes, 0,
CInt(tcpClient.ReceiveBufferSize))
                Dim returndata As String =
Encoding.ASCII.GetString(bytes)
                txtRisultato.Text = returndata
            Else
                txtRisultato.Text = "Non riesco a leggere i dati!"
                tcpClient.Close()
                Return
            End If
            tcpClient.Close()
        Catch
            txtRisultato.Text = "Non riesco a connettermi!"
        End Try

        End Try
Non mi e' ancora ben chiaro il motivo, pero' mi sembra ancora "pensato"
nel vb tradizionale. Io userei un oggetto Stream:
<codice>
If networkStream.CanRead Then
	Dim myStream As New StreamReader(networkStream)
	Dim Result = myStream.ReadLine()
	Do While (myStream.Peek <> -1)
		Console.WriteLine(Result)
		Result = myStream.ReadLine()
	Loop
Else
	.......
</codice>
Se farai cosi', vedrai che funziona ;-)
-- 
hth, hal

Se farai cosi', vedrai che funziona ;-)
Non funziona, mi da lo stesso problema.
Grazie comunque.
Ciao
PS)
	Do While (myStream.Peek > -1)
		Result = myStream.ReadLine()
		Console.WriteLine(Result)
	Loop

Non funziona, mi da lo stesso problema.
Fidati, che va bene, l' ho estratto da un mio programma ;-)
Posta il codice _completo_ che hai usato.
-- 
ciao, hal

Mi spiego meglio, con il .com funziona e restituisce tutto, mentre con
il .it restituisce solo il primo dei tre blocchi; se interrogo
whois.nic.it
 usando il comando whois da linux ottengo tutti i blocchi.
Comunque ti posto il codice che ho modificato come volevi tu.
Ciao
________________________________________________________
Private Sub btnVerifica_Click(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles btnVerifica.Click
        Dim tcpClient As TcpClient = New TcpClient()
        txtRisultato.Text = ""
        Try
            tcpClient.Connect("
whois.nic.it
", 43)
            Dim networkStream As NetworkStream = tcpClient.GetStream()
            If networkStream.CanWrite Then
                Dim sendBytes As [Byte]() =
Encoding.ASCII.GetBytes(txtDominio.Text + vbCrLf)
                networkStream.Write(sendBytes, 0, sendBytes.Length)
            Else
                tcpClient.Close()
                Return
            End If
            If networkStream.CanRead Then
                Dim myStream As New StreamReader(networkStream)
                Dim Result = myStream.ReadLine()
                Do While (myStream.Peek > -1)
                    Result = myStream.ReadLine()
                    txtRisultato.Text += Result + vbCrLf
                Loop
            Else
                txtRisultato.Text = "Non riesco a leggere i dati!"
                tcpClient.Close()
                Return
            End If
            tcpClient.Close()
        Catch
            txtRisultato.Text = "Non riesco a connettermi!"
        End Try
    End Sub


whois.nic.it
 usando il comando whois da linux ottengo tutti i blocchi.
Rettifico, non dipende dal whois server, ma dal tempo di risposta: se
diventa troppo lungo tronca  il risultato.
Se infatti faccio un'interrogazione metre sto scaricando un grosso
file, mi tronca il risultato.
Probabilmente devo mettere un dalay o un altro controllo prima della
vaerifica della condizione while.
Ciao

>
whois.nic.it
 usando il comando whois da linux ottengo tutti i blocchi.
Uhmm, ho provato ad interrogare 
whois.nic.it
 per 
repubblica.it
 con
la versione java del codice che avevo proposto e quella 
vb.net
ed entrambi hanno fornito tutti i blocchi.
Mi diresti con quali nomi hai provato? La cosa mi incuriosisce e vorrei,
gia' che ci sono, rafforzare l' utility java che mi sono fatto per alcune
funzionalita' di rete.
(I server whois con cui ho provato sono stati 
whois.nic.it
 e 
whois.geektools.com
)
-- 
ciao, hal

funzionalita' di rete.
Un po' con tutti, anche con 
microsoft.com
 me lo fa. Non dipende dal
nome; forse dipende dal fatto che uso l'ADSL, MA ?!?!!?
Cerchero' di trovare una soluzione.
Ciao

Cerchero' di trovare una soluzione.
Intanto che aggiorno l' interfaccia grafica della mia utility, ci giochero'
un po' anch' io.
-- 
ciao, hal

Ho risolto il problema, il modo giusto di scrivere il ciclo è il
seguente:
Do While Not (Result Is Nothing)
                    Result = myStream.ReadLine()
                    txtRisultato.Text += Result + vbCrLf
                Loop
Grazie ugualmente a chi ha cercato di aiutarmi.
Ciao

Grazie ugualmente a chi ha cercato di aiutarmi.
Grazie a te ;-)
-- 
ciao, hal

 ha scritto
