Oppure

Loading
Questo topic e' stato chiuso dal moderatore.
08/11/09 17:28
carant
Ciao a tutti,
Ciao a tutti,
sto cercando di inviare stringhe tramite un networkstream ma mi dà un errore...
Riporto il codice:
codice:

Dim stream As NetworkStream             
stream = client.GetStream()           
If stream.CanRead Then            
Dim c(client.ReceiveBufferSize) As Byte        
Dim size = c.Length
stream.Read(c, 0, size) 
End If



Naturalmente prima c'è una procedura per la connessione...
Dice che il flusso di informazioni non supporta funzioni di ricerca(su stream.canread)...
che devo fare??
Ciao.
aaa
09/11/09 15:42
Il Totem
Strano, di solito quell'eccezione viene generata in altri casi, come, ad esempio, l'uso della proprietà Position o Length o del metodo Seek. Sei sicuro che sia proprio quella linea?
aaa
09/11/09 16:16
carant
Veramente adesso non mi dà più errori: si blocca il programma e tutto visual basic..:-?
Se per te il codice va bene forse è il mio pc e quindi vado avanti.
Posto tutta la procedura:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        client = New TcpClient("127.0.0.1", 25)

        If client.Connected Then
            ToolStripStatusLabel1.Text = "Connessione stabilita"
            Dim stream As NetworkStream
            stream = client.GetStream()
            If stream.CanRead Then
                Dim c(client.ReceiveBufferSize) As Byte
                Dim size As Integer = c.Length
                stream.Read(c, 0, size)
            End If
        End If

    End Sub


Ciao.:)
aaa
10/11/09 11:36
Il Totem
Devi aspettare che si connette, quindi... non si è bloccato.
Ultima modifica effettuata da Il Totem 10/11/09 11:37
aaa
10/11/09 18:14
carant
Quando si deve connettere mi esce subito il messaggio "Connesso"...
Forse è perchè l'oggetot stream non è mai stato creato.. se io scrivo stream=client.getstream() ho creato l'oggetto?? o devo usare new?? perchè se è così mi chiede il socket e devo cambiare tutto, dovrei connettere due computer con il socket...
(è la prima volta che scrivo networking)!!!
:):):)
Dimmi come devo fare...
ciao.
aaa
11/11/09 10:46
Il Totem
Nono stai facendo confusione. Tu non ti devi preoccupare di creare l'oggetto, altrimenti GetStream sarebbe totalmente inutile, non ti pare? L'inizializzazione con New serve per creare una nuova istanza di un oggetto, è vero, ma in questo caso c'è qualcun altro che la crea per noi, ossia la funzione GetStream. Se l'oggetto non fosse esistito avresti ricevuto un'eccezione di tipo NullReferenceException.
Lo stream esiste, ma la connessione può non essere sempre istantanea, quindi ti suggerisco di usare dei breakpoint per controllare dove l'esecuzione si blocca. E poi non hai postato il codice del server: magari l'errore è lì.
aaa
12/11/09 18:38
carant
Non so cosa sia un breakpoint, quindi posto il codice del server:
CLIENT:
Private client As TcpClient

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        client = New TcpClient("127.0.0.1", 25)
        If client.Connected Then
            ToolStripStatusLabel1.Text = "Connessione stabilita"
            Dim stream As NetworkStream
            stream = client.GetStream()
            If stream.CanRead Then
                Dim c(client.ReceiveBufferSize) As Byte
                Dim size As Integer = c.Length
                stream.Read(c, 0, size)
                Dim msg
                msg = stream.Read(c, 0, size)
                Dim msgdascrivere As String
                msgdascrivere = System.Text.Encoding.ASCII.GetChars(msg)
                TextBox1.Text = msgdascrivere
            End If
        End If
    End Sub



SERVER:
Public listener As TcpListener = New TcpListener(25)
    Private client As TcpClient = New TcpClient()
    Public stream As NetworkStream

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        listener.Start()
        If listener.Pending Then
            Timer1.Stop()
            client = listener.AcceptTcpClient()
            listener.Stop()
        End If
        If client.Connected Then
            stream = client.GetStream()
            Dim msg
            msg = System.Text.Encoding.ASCII.GetBytes("ciao")
            stream.Write(msg, 0, msg.length)
        End If
    End Sub

:)
aaa
12/11/09 22:09
Gianluca87
oddio...un socket in mano a un timer...
aaa