06/03/10 7:26
Il Totem
totem.altervista.org/guida/versione3/…
P.S.: credo che tu non ti riferisca alla classe Semaphore, vero?
P.S.: credo che tu non ti riferisca alla classe Semaphore, vero?
aaa
06/03/10 9:22
albertino
Ciao, no non mi riferisco ad una classe per eventi semaforici, ma proprio a qualcosa di visuale. Immagina una gara di karate. Ci sono dei tatami dove si svolgono degli incontri. Per ogni tatami c'è un computer che segna i punti, le penalità ecc. Al tavolo centrale della giuria c'è un computer con tutte le categorie degli atleti. Al tavolo centrale devono sapere che un determinato incontro sta per finire per preparare la categoria successiva.
Avevo pensato a qualche cosa di visuale. Quando su un computer del tatami si preme un tasto, nel computer centrale un qualcosa passa da rosso a verde.......
Cercando ininternet ho adattato questa classe.......
Ma ho due problemi che non riesco a risolvere......
1. Quando dal client premo il tasto per inviare il messaggio "B1" il server, invece di colorare il panel di blu, non fa assolutamente niente fino a quando non faccio apparire per esempio una textbox. Pensando che fosse un problema di aggiornamento del form ho provato a inserire Me.refresh() o Me.reload() ma la situazione non cabia .....
2. Non riesco a fermare l'ascolto. Quando ci provo il programma non risponde più e devo chiuderlo dal task manager .......
Avevo pensato a qualche cosa di visuale. Quando su un computer del tatami si preme un tasto, nel computer centrale un qualcosa passa da rosso a verde.......
Cercando ininternet ho adattato questa classe.......
Public Class srv Dim serverSocket As New TcpListener(8889) Dim clientSocket As TcpClient Public Sub start() serverSocket.Start() MsgBox("Server Started") clientSocket = serverSocket.AcceptTcpClient() listen() End Sub Public Sub listen() While (True) Try Dim networkStream As NetworkStream = _ clientSocket.GetStream() Dim bytesFrom(10024) As Byte networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) Dim dataFromClient As String = _ System.Text.Encoding.ASCII.GetString(bytesFrom) dataFromClient = _ dataFromClient.Substring(0, dataFromClient.IndexOf("$")) 'msg("Data from client - " + dataFromClient) ChangeState(dataFromClient) Dim serverResponse As String = _ "Server response" Dim sendBytes As [Byte]() = _ Encoding.ASCII.GetBytes(serverResponse) networkStream.Write(sendBytes, 0, sendBytes.Length) networkStream.Flush() Catch ex As Exception MsgBox(ex.ToString) End Try End While End Sub Public Sub ChangeState(ByVal dataFromClient As String) If dataFromClient = "B1" Then Form1.Panel1.BackColor = Color.Blue ElseIf dataFromClient = "B2" Then Form1.Panel1.BackColor = Color.Red End If End Sub Public Sub sto() clientSocket.Close() serverSocket.Stop() End Sub End Class
Ma ho due problemi che non riesco a risolvere......
1. Quando dal client premo il tasto per inviare il messaggio "B1" il server, invece di colorare il panel di blu, non fa assolutamente niente fino a quando non faccio apparire per esempio una textbox. Pensando che fosse un problema di aggiornamento del form ho provato a inserire Me.refresh() o Me.reload() ma la situazione non cabia .....
2. Non riesco a fermare l'ascolto. Quando ci provo il programma non risponde più e devo chiuderlo dal task manager .......
Ultima modifica effettuata da albertino 06/03/10 17:07
aaa
07/03/10 11:14
Il Totem
Il programma non risponde perchè l'ascolto avviene tramite un ciclo infinito, un approccio decisamente ridicolo e privo di senso che tuttavia continua a vagare per la rete. Ti suggerisco di lasciar perdere quella classe e invece di guardare il link che ti ho proposto. Se adotterai un criterio simile a quello usato nei miei esempi non avrai di questi problemi (anche il primo è dovuto alla stessa ragione).
P.S.: tatami col computer
P.S.: tatami col computer
aaa
09/03/10 17:18
albertino
Ok, hai ragione. Ho usato il tuo codice e tutto fnziona a meraviglia. Sono partito dal tuo esempio e ho eliminato tutte le funzioni interattive ed utilizzato solo la parte server.
Cosa mi consigli di fare per una versione per gestire diverse cnnessioni ?
Cosa mi consigli di fare per una versione per gestire diverse cnnessioni ?
aaa