Usuário com melhor resposta
Passar de Console para WindowsAplication

Pergunta
-
Tenho uma source que foi desenvolvida pelo Macoratti para Console, estou alterando ela mais estou travado em uma Public Class, quando se criar uma nova solução já é criado o Public Class Form1 automaticamente, e nessa source tem a Public Class tratarCliente, e não consigo colocá-la dentro da source mesmo usando os 2 End Class seguindo, se eu fizer desse modo a source fica OK mais o Private Sub broadcast e Sub Mensagem ficam inacessíveis para Public Class tratarCliente.
Imports System.Net Imports System.Text Imports System.Net.Sockets Module Module1 Dim listaClientes As New Hashtable Sub Main() Dim enderecoLocal As IPAddress = IPAddress.Parse("192.168.0.10") '127.0.0.1 Dim serverSocket As New TcpListener(enderecoLocal, 8888) Dim clientSocket As TcpClient = Nothing Dim contador As Integer serverSocket.Start() Mensagem("Sistema: Servidor iniciado...") contador = 0 While (True) contador += 1 clientSocket = serverSocket.AcceptTcpClient() Dim bytesFrom(10024) As Byte Dim dadosDoCliente As String Dim networkStream As NetworkStream = clientSocket.GetStream() networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) dadosDoCliente = Encoding.ASCII.GetString(bytesFrom) dadosDoCliente = dadosDoCliente.Substring(0, dadosDoCliente.IndexOf("$")) listaClientes(dadosDoCliente) = clientSocket broadcast(dadosDoCliente + " Bem Vindo", dadosDoCliente, False) Mensagem(dadosDoCliente + " Entrou na Sala ") Dim cliente As New tratarCliente cliente.iniciaCliente(clientSocket, dadosDoCliente, listaClientes) End While clientSocket.Close() serverSocket.Stop() Mensagem("Sair") Console.ReadLine() End Sub Sub Mensagem(ByVal texto As String) texto.Trim() Console.WriteLine(" >> " + texto) End Sub Private Sub broadcast(ByVal Mensagem As String, ByVal nomeUsuario As String, ByVal flag As Boolean) Dim Item As DictionaryEntry For Each Item In listaClientes Dim broadcastSocket As TcpClient broadcastSocket = CType(Item.Value, TcpClient) Try Dim broadcastStream As NetworkStream = broadcastSocket.GetStream() Dim broadcastBytes As [Byte]() If flag = True Then broadcastBytes = Encoding.ASCII.GetBytes(nomeUsuario + ": " + Mensagem) Else broadcastBytes = Encoding.ASCII.GetBytes(Mensagem) End If broadcastStream.Write(broadcastBytes, 0, broadcastBytes.Length) broadcastStream.Flush() Catch ex As Exception MsgBox(ex.Message) End Try Next End Sub Public Class tratarCliente Dim clientSocket As TcpClient Dim clNo As String Dim listaClientes As Hashtable Public Sub iniciaCliente(ByVal inClientSocket As TcpClient, ByVal clineNo As String, ByVal cList As Hashtable) Me.clientSocket = inClientSocket Me.clNo = clineNo Me.listaClientes = cList Dim ctThread As Threading.Thread = New Threading.Thread(AddressOf doChat) ctThread.Start() End Sub Private Sub doChat() Dim contadorRequisicao As Integer Dim bytesFrom(10024) As Byte Dim dadosDoCliente As String Dim rContador As String contadorRequisicao = 0 While (True) Try contadorRequisicao = contadorRequisicao + 1 Dim networkStream As NetworkStream = clientSocket.GetStream() networkStream.Read(bytesFrom, 0, CInt(clientSocket.ReceiveBufferSize)) dadosDoCliente = System.Text.Encoding.ASCII.GetString(bytesFrom) dadosDoCliente = dadosDoCliente.Substring(0, dadosDoCliente.IndexOf("$")) Mensagem("Cliente - " + clNo + " : " + dadosDoCliente) rContador = Convert.ToString(contadorRequisicao) broadcast(dadosDoCliente, clNo, True) Catch ex As Exception MsgBox(ex.ToString) End Try End While End Sub End Class End Module
- Editado Tiago.SP sábado, 23 de maio de 2015 18:32
Respostas
-
Faz assim:
1- Insere no projecto uma nova class;
2- Corta do modulo Module1 o código da class: desde Public Class tratarCliente até End Class;
3- Cola esse código na nova class substituindo o que lá estiver;
4- Copia também os imports do inicio do modulo para não aparecer erros na class.
- Marcado como Resposta Marcos SJ sexta-feira, 26 de fevereiro de 2016 13:37
Todas as Respostas
-
Faz assim:
1- Insere no projecto uma nova class;
2- Corta do modulo Module1 o código da class: desde Public Class tratarCliente até End Class;
3- Cola esse código na nova class substituindo o que lá estiver;
4- Copia também os imports do inicio do modulo para não aparecer erros na class.
- Marcado como Resposta Marcos SJ sexta-feira, 26 de fevereiro de 2016 13:37
-
Bom dia,
Por falta de retorno do usuário, esta thread será encerrada.
Caso seja necessário, por gentileza, abra uma thread nova.
Atenciosamente
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.