Salve a tutti, ho il seguente problema:
devo creare un programmino, client, che tramite tcp/ip deve scambiare stringhe di testo, con un' altra applicazione già predisposta. In particolare questa applicazione è un programma di trading che apre un Socket TCP/IP in ascolto sulla porta 10001 e attende i messaggi provenienti dal client.
Ora, per quanto riguarda la ricezione dei dati non ho problemi, ma quando provo ad inviare messaggi all' applicazione non ottengo nessun responso e non so come risolvere, stò uscendo pazzo.
Il codice che ho scritto finora è il seguente:
Imports System.Net.Sockets 'Libreria per gestire i sockets
Imports System.Text.UTF8Encoding 'Libreria per decodificare in UTF8
Imports System.Text
Public Class Form1
Dim cliente As New TcpClient 'Variabile client
Dim flusso As NetworkStream 'Variabile flusso di dati client-server
Dim encoding As New System.Text.UTF8Encoding()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
cliente.Connect("127.0.0.1", 10001) 'Connetti cliente all'indirizzo 127.0.0.1 attraverso la porta 10001
If cliente.Connected Then 'Se cliente è connesso allora... (cioè se il server è in ascolto)
TextBox3.Text = TextBox3.Text & "Connesso!" & vbCrLf 'Scrivo in TextBox3
flusso = cliente.GetStream() 'flusso è l’invio/ricezione (Stream) di dati con il server al quale cliente è connesso
Timer1.Start() 'Avvio Timer1
Else 'Altrimenti...
TextBox3.Text = TextBox3.Text & "Il server non risponde!" & vbCrLf 'Scrivo in TextBox3
End If 'Fine se
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If cliente.Available > 0 Then 'Se i dati che ricevi dal server al quale è connesso cliente sono disponibili e sono maggiori di 0
Dim temp(cliente.Available - 1) As Byte 'Dichiaro un array con dimensioni uguali al numero di dati ricevuti da cliente meno 1
flusso.Read(temp, 0, temp.Length) 'Leggo il flusso di dati
Dim testo As String = UTF8.GetString(temp) 'Decodifica temp in stringa UTF8 e mettila in testo
TextBox3.Text = "Server: " & testo 'Scrivo nella TextBox3
End If 'Fine se
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
TextBox3.Text = "Client: " & TextBox2.Text & vbCrLf 'Scrivo nella TextBox3
Dim temp() As Byte = System.Text.Encoding.ASCII.GetBytes(TextBox2.Text) 'Decodifica la stringa in TextBox2 in bytes e metti ogni byte nell'array temp
flusso.Write(temp, 0, temp.Length) 'Scrivi il flusso di dati
flusso.Flush()
End Sub
End Class
Il problema è nella parte di codice eseguita alla pressione del tasto button2, l' applicazione dovrebbe ricevere il valore della textbox2.text e restituire determinate informazioni in risposta che però non arrivano mai....... se qualcuno è in grado di aiutarmi glie ne sarei infinitamente riconoscente,
grazie.