salve a tutti
avendo un programma, che lo avvio come finestra DOS e lui rimane in attesa di una chiamata TCP
il problema è che dopo varie chiamate, la RAM aumenta di continuo,e non riesco a determinare dove è il pezzo di codice che da il problema
faccio presente che le altre routine SUB che vengono chiamate sono totalmente escluse da bug in quanto le hoi usate per molto tempo in altri programmi,ovviamente penso che il problema sia qui in quanto è la prima volta che mi cimento in TCP
questo è il codice
codice:Public Sub Main() Dim TcpThread As Thread Try 'Starting the TCP Listener thread. TcpThread = New Thread(AddressOf StartListen) TcpThread.Start() Catch ex As Exception Throw New Exception(ex.Message) Console.WriteLine("Si è verificato un errore") TcpThread.Abort() End Try End Sub Public Sub StartListen() ' Must listen on correct port- must be same as port client wants to connect on. Const portNumber As Integer = 8000 Dim tcpListener As New TcpListener(portNumber) Dim clientData As String Try While (True) tcpListener.Start() Console.WriteLine("In attesa di una nuova richiesta...") Dim tcpClient As TcpClient = tcpListener.AcceptTcpClient() Console.WriteLine("Richiesta ricevuta.") Dim networkStream As NetworkStream = tcpClient.GetStream() Dim bytesToRead(tcpClient.ReceiveBufferSize) As Byte Dim numBytesRead As Integer = networkStream.Read(bytesToRead, 0, CInt(tcpClient.ReceiveBufferSize)) clientData = Encoding.ASCII.GetString(bytesToRead, 0, numBytesRead) Dim tipoOperazione As String = Left(clientData, 3) Dim responseString As String Select Case tipoOperazione Case Is = "TUFF" Console.WriteLine("operazione ripristino") Call verifica(clientr) responseString = Trasmissione & "?" End Select Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes(responseString, 0, responseString.Length) networkStream.Write(sendBytes, 0, sendBytes.Length) tcpClient.Close() tcpListener.Stop() End While Catch ex As Exception Console.WriteLine(ex.Message) tcpListener.Stop() End Try End Sub
posto anche il codice che spedisce la stringa alla porta,forse si tratta qui del problema
codice:Private Function SendDataBarcode(ByVal BarCode As String) As Boolean Dim tcpClient As New TcpClient() Try tcpClient.Connect(Server, 8000) Dim networkStream As NetworkStream = tcpClient.GetStream() Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("BAR@" & BarCode & "@" & Server) networkStream.Write(sendBytes, 0, sendBytes.Length) ' Read the NetworkStream into a byte buffer. Dim bytes(tcpClient.ReceiveBufferSize) As Byte Dim numBytesRead As Integer = networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize)) Dim returndata As String = Encoding.ASCII.GetString(bytes, 0, numBytesRead) Dim datiServer() = Split(returndata, "@") 'Controllo il barcode. If datiServer(0) <> "failed" Then txtArticolo.Text = datiServer(6) txtMarchio.Text = datiServer(1) Return True Else Return False End If Catch ex As Exception Return False Finally tcpClient.Close() End Try End Function

Rispondi quotando
