A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Visual Basic TCP.

Apresentações semelhantes


Apresentação em tema: "Visual Basic TCP."— Transcrição da apresentação:

1 Visual Basic TCP

2 Servidor TCP Objecto no VB que permite programar um servidor TCP: TcpListener Inicialização: Dim server As TcpListener Dim port As Int32 = 13000 Dim localAddr As System.Net.IPAddress = System.Net.IPAddress.Parse(" ") server = New TcpListener(localAddr, port)

3 TCP Listener Depois de inicializar um objecto é necessário activar o servidor server.Start() Nesta altura o servidor está pronto a receber ligações, mas para cada nova ligação é necessário usar um TcpClient

4 TcpClient Permite estabelecer uma ligação TCP
Inicializar, e esperar pela próxima ligação: Dim client As TcpClient = server.AcceptTcpClient() Enquanto não houver uma ligação o programa fica parado nesta linha Para ler e escrever dados usamos um NetworkStream

5 NetworkStrem Inicializar a partir de um TcpClient (client)
Dim stream As NetworkStream = client.GetStream() Para ler e escrever dados temos de usar um array de bytes Dim bytes(1024) As Byte A leitura devolve o número de bytes realmente lidos (ou zero se não estiverem dados disponíveis) Dim i As Int32 i = stream.Read(bytes, 0, bytes.Length)

6 Convertendo os dados recebidos
Se estamos a transmitir dados em bytes, os dados estão “prontos a usar” Se estamos a usar strings temos de converter os bytes Dim data As String = Nothing data = System.Text.Encoding.ASCII.GetString(bytes, 0, i)

7 Enviando dados Aplica-se o mesmo princípio que na recepção: apenas podemos enviar arrays de bytes stream.Write(msg, 0, msg.Length) Se queremos enviar texto temos de fazer a conversão antes: Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

8 Fechando as contas Depois de transmitir e receber todos os dados devemos fechar os objectos stream.Close() client.Close() E no final de todo o processamento terminar o servidor server.Stop()

9 Cliente TCP Ligar a um servidor
Dim server As String = " " Dim port As Int32 = 13000 Dim client As New TcpClient(server, port) De resto o objecto TcpClient é usado da mesma forma que no servidor

10 Excepções Quando há um erro numa ligação TCP o Visual Basic gera uma “excepção” Para controlar as excepções usa-se as instruções Try/Catch Try ‘ instruções Catch e As SocketException ‘ processamento do erro End Try

11 Excepções Quando é disparada uma excepção o VB passa a execução directamente para o Catch respectivo Depois de processar o Catch o VB continua a execução depois do End Try Também se pode usar a instrução Finally para executar código final que é chamado depois de um catch ou no final da execução normal do código dentro do Try

12 Excepções Pode-se ter vários “Catch”, cada uma para o seu tipo de excepção: Catch e1 As ArgumentNullException ‘ processar excepção 1 Catch e2 As SocketException ‘ processar excepção 2

13 Threads Como no processamento do TCP é preciso ficar “à espera” que algo aconteça é normal usar Threads, que permitem executar diversos códigos VB em paralelo O código que vai ser iniciado em paralelo com o código principal deve ser definido num Sub sem parâmetros Private Sub ThreadProc() (nota: pode ter qualquer nome que se queira… não precisa de ser ThreadProc)

14 Threads Para “arrancar” a Thread usa-se:
Dim t As New Thread(AddressOf ThreadProc) t.Start() Depois de t.Start o VB passa a executar dois códigos “ao mesmo tempo”: o código principal e o código de ThreadProc Podemos ter múltipas threads num programa As threads partilham as variáveis globais

15 Threads As coisas complicam-se (ainda mais) quando as Threads partilham objectos, como é o caso de ter uma Thread a aceder a um objecto da janela principal É necessário usar um “Invoke” que permite o acesso seguro entre Threads

16 Invoke A “receita” mais eficaz é usar um procedimento que chama o Invoke Exemplo para TextBox1.AppendText: Delegate Sub AppendTextCallback(ByVal text As String) Private Sub TextBox1AppendText(ByVal txt As String) Dim d As New AppendTextCallback(AddressOf TextBox1.AppendText) Me.Invoke(d, txt) End Sub

17 Invoke O “Callback” tem os mesmos parâmetros do método AppendText que queremos chamar: Delegate Sub AppendTextCallback(ByVal text As String) Se quisermos mudar o texto de várias caixas de texto temos de definir procedimentos para cada uma

18 Invoke Sempre que quisermos “mexer” em qualquer coisa da janela principal temos de usar um Invoke Isto aplica-se quer a mudar o texto de uma textbox, a mudar o texto ou posição de um botão ou até o título da janela, etc…


Carregar ppt "Visual Basic TCP."

Apresentações semelhantes


Anúncios Google