|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 102
|
[vb.net] client remoto
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: Codice:
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
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
dai uno sguardo qui http://www.eggheadcafe.com/articles/20020323.asp
|
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 102
|
grazie per aver risposto, ma sul link c'e piu o meno lo stesso identico codice, perche non esegue l'istruzione "if" quando chiamo la funzione esegui ?
Ultima modifica di manuel 66 : 18-03-2011 alle 18:34. |
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
Quote:
Codice:
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
|
|
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 102
|
ho gia controllato con un msgbox il valore di Msg e corrisponde a quello inviato dal client(lo codifica in byte e li invia)
mi ero dimenticato di dire che quando il client che invia i comandi, si connette a quello che esegue esso si blocca, ed ogni volta che gli invio un comando si sblocca per un secondo e aggiorna la listbox; questo mi fa capire che dovrei mettere un multithread ma come ? se vuoi vedere i sorgenti ecco il link http://www.megaupload.com/?d=XE97Z13F Ultima modifica di manuel 66 : 19-03-2011 alle 02:00. |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
Ho visto il tuo programma e si blocca perchè non utilizzi i thread. Devi farti il programma da capo leggi qui -> http://vb.net-informations.com/commu...er_program.htm hai sia il client che il server in multithreading con codice pronto studialo e casomai adattalo al tuo progretto se hai problemi scrivi pure
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Jul 2009
Messaggi: 102
|
grazie mille, adesso provo
il client che invia l'ho convertito e funge bene, il server invece e molto piu difficile da convertire come voglio, ma finalmente riesco ad eseguire il ciclo if ed a ottenere un'output manca solo una cancellazione del codice superfluo Ultima modifica di manuel 66 : 19-03-2011 alle 19:35. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:22.




















