Multithreaded con System.Net.Sockets

martedì 26 ottobre 2010 - 15.53
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows Vista  |  Visual Studio 2010

ivanuccio Profilo | Junior Member

Salve a tutti volevo chiedervi la gentilezza di indicarmi una buona guida per la realizzazione di un 'programma in VB.Net per realizzare un server che ascolti su una porta ed accetti tanti cliente che inviano delle tringe,,
Io ho scritto questo codice ma mi va in errore ..

Imports System.Net.Sockets Imports System.Text Module Module1 Sub Main() Dim serverSocket As New TcpListener(10005) Dim clientSocket As TcpClient Dim counter As Integer serverSocket.Start() msg("Server Started") counter = 0 While (True) counter += 1 clientSocket = serverSocket.AcceptTcpClient() msg("Client No:" + Convert.ToString(counter) + " started!") Dim client As New handleClinet client.startClient(clientSocket, Convert.ToString(counter)) End While clientSocket.Close() serverSocket.Stop() msg("exit") Console.ReadLine() End Sub Sub msg(ByVal mesg As String) mesg.Trim() Console.WriteLine(" >> " + mesg) End Sub Public Class handleClinet Dim clientSocket As TcpClient Dim clNo As String Public Sub startClient(ByVal inClientSocket As TcpClient, ByVal clineNo As String) Me.clientSocket = inClientSocket Me.clNo = clineNo Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat) ctThread.Start() End Sub Private Sub doChat() Dim requestCount As Integer Dim bytesFrom(10024) As Byte Dim dataFromClient As String Dim sendBytes As [Byte]() Dim serverResponse As String Dim rCount As String Dim byteCount() As Byte requestCount = 0 While (True) Try requestCount = requestCount + 1 Dim networkStream As NetworkStream = clientSocket.GetStream() networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) dataFromClient = System.Text.Encoding.ASCII.GetString(bytesFrom) 'dataFromClient = dataFromClient.Substring(0, dataFromClient.IndexOf("$")) networkStream.Read(bytesFrom, 0, bytesFrom.Length) msg("From client-" + clNo + dataFromClient) rCount = Convert.ToString(requestCount) serverResponse = "Server to clinet(" + clNo + ") " + rCount sendBytes = Encoding.ASCII.GetBytes(serverResponse) networkStream.Write(sendBytes, 0, sendBytes.Length) networkStream.Flush() msg(serverResponse) Catch ex As Exception MsgBox(ex.ToString) End Try End While End Sub End Class

Potete aiutarmi grazie
AAA Importante il programma funziona per circa 3 minuti ricevo i dati sulla porta in asscolto , poi si interrompe restituendo questi messaggi.
****************************
1) Operazione non consentita su socket non connessi.


kataklisma Profilo | Senior Member

Ciao :)

Di sicuro non risolverà il tuo problema ma a mio modesto parare ti faciliterà la vita non di poco!

.Net offre un potentissimo framework, Windows Communication Foundation (WCF) prova a leggere qualcosa, ti stupirà :)

Buona serata!
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/

ivanuccio Profilo | Junior Member

Hai qualche link dove indirizzarmi ???

kataklisma Profilo | Senior Member

Certo, anche se il framework è molto vasto e serve la lettura di qualcosa di piu consistente!

VS fa la sua parte, creandoti tutta la struttura necessaria, ecco qualche link :

http://it.wikipedia.org/wiki/Windows_Communication_Foundation

http://msdn.microsoft.com/it-it/library/ms731067.aspx
------------------------------------------
Ignazio Catanzaro

http://blogs.dotnethell.it/swdev/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5