manuel 66
18-03-2011, 12:33
sto creando 2 programmi, che comunicano tramite socket, il primo programma e quello che comanda, mentre il 2 e quello che riceve i comandi e esegue.
il problema e che quello che riceve ed esegue (credo sia un problema di thread) alla chiamata della funzione esegui non fa niente (non esegue le istruzioni if)
vi posto il codice del client:
Imports System.Net.Sockets
Imports System.Text.ASCIIEncoding
Public Class Form1
Dim Msg As String
Private Listener As TcpListener
Private Client As TcpClient
Private NetStream As NetworkStream
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Listener = New TcpListener(25)
Listener.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Listener.Pending Then
Client = Listener.AcceptTcpClient
NetStream = Client.GetStream
Msg = GetMessage(NetStream)
ListBox1.Items.Add(Msg)
esegui()
End If
End Sub
Private Function GetMessage(ByVal Stream As NetworkStream) As String
Try
If Stream.CanRead Then
Dim Bytes(Client.ReceiveBufferSize) As Byte
Dim Msg As String
Stream.Read(Bytes, 0, Bytes.Length)
Msg = ASCII.GetString(Bytes)
Return Msg.Normalize
Else
Return Nothing
End If
Catch
End
End Try
End Function
Private Sub esegui()
'MsgBox("esegui")
If Msg = "nome del comando" Then
MsgBox("output del comando")
End If
End Sub
End Class
il problema e che quello che riceve ed esegue (credo sia un problema di thread) alla chiamata della funzione esegui non fa niente (non esegue le istruzioni if)
vi posto il codice del client:
Imports System.Net.Sockets
Imports System.Text.ASCIIEncoding
Public Class Form1
Dim Msg As String
Private Listener As TcpListener
Private Client As TcpClient
Private NetStream As NetworkStream
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Listener = New TcpListener(25)
Listener.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If Listener.Pending Then
Client = Listener.AcceptTcpClient
NetStream = Client.GetStream
Msg = GetMessage(NetStream)
ListBox1.Items.Add(Msg)
esegui()
End If
End Sub
Private Function GetMessage(ByVal Stream As NetworkStream) As String
Try
If Stream.CanRead Then
Dim Bytes(Client.ReceiveBufferSize) As Byte
Dim Msg As String
Stream.Read(Bytes, 0, Bytes.Length)
Msg = ASCII.GetString(Bytes)
Return Msg.Normalize
Else
Return Nothing
End If
Catch
End
End Try
End Function
Private Sub esegui()
'MsgBox("esegui")
If Msg = "nome del comando" Then
MsgBox("output del comando")
End If
End Sub
End Class