Mini-Curso de Sockets no Unipê

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Mini-Curso de Sockets no Unipê - Presentation Transcript

    1. Sockets em Java Elenils on Vieira Embaixador de Campus da Sun Universidade Federal da Paraíba blogs.sun.com/elenilsonvieira elenilson.vieira@sun.com 1
    2. 2
    3. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 3
    4. Footnote position, 12 pts. Sun Confidential: Internal Only 4
    5. Quem conhece Programação Distribuída? Sun Confidential: Internal Only 5
    6. Footnote position, 12 pts. Sun Confidential: Internal Only 6
    7. Por que aprender a programar com sockets? • Programar para Internet • Programar para rede local • Comunicação inter-processos • A interface socket tornou-se quase tão popular entre os programadores quanto a própria Internet. Sun Confidential: Internal Only 7
    8. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 8
    9. Definição Sun Confidential: Internal Only 9
    10. Sun Confidential: Internal Only 10
    11. O que é um Socket? • Representação interna do sistema operacional para um ponto de comunicação • Cada endpoint é representado por um par (endereço_ip,porta) Sun Confidential: Internal Only 11
    12. O que é Socket? • Uma porta serve para identificar processos comunicantes • A interface padronizada de soquetes surgiu originalmente no sistema operacional Unix BSD (Berkeley Software Distribution); por isso, eles são muitas vezes chamados de Berkeley Sockets. Sun Confidential: Internal Only 12
    13. Host#1 Host #n Processo #1 … Processo #m Processo #1 … Processo #k Porta #1 Porta #m Porta #1 Porta #k Pilha de rede do sitema operacional … Pilha de rede do Sistema operacional Endereço IP#1 Endereço IP #n Network Sun Confidential: Internal Only 13
    14. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 14
    15. Protocolos Sun Confidential: Internal Only 15
    16. O que é um Protocolo? Sun Confidential: Internal Only 16
    17. Protocolos • São regras para a comunicação entre duas aplicações, computadores, dispositivos, etc. • Em programação, protocolos são funções que implementam serviços de comunicação Sun Confidential: Internal Only 17
    18. oi envie os dados soma 2 2 4 Multi 2 4 8 tchau Sun Confidential: Internal Only 18
    19. Protocolos • São a interface de um módulo ou de uma camada de rede • Exemplo : TCP/IP, Telnet, HTTP, SMTP, FTP, NNTP, SNMP, ARP, RARP, BOOTP, ICMP, IGMP, etc. Sun Confidential: Internal Only 19
    20. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 20
    21. Modelo Cliente-Servidor Sun Confidential: Internal Only 21
    22. O que é o Modelo Cliente-Servidor? Sun Confidential: Internal Only 22
    23. Modelo Cliente-Servidor • Sockets se baseia no modelo cliente/servidor > O cliente é um processo ou aplicação que requisita um serviço oferecido por um servidor. > O servidor aceita as requisições dos clientes, realiza o processamento delas Sun Confidential: Internal Only 23
    24. Modelo Cliente-Servidor • Interação > paradigma requisição-resposta Footnote position, 12 pts. Sun Confidential: Internal Only 24
    25. Modelo Cliente-Servidor Footnote position, 12 pts. Sun Confidential: Internal Only 25
    26. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 26
    27. Formas de Comunicação Footnote position, 12 pts. Sun Confidential: Internal Only 27
    28. Dois tipos de comunicação • Com conexão • Sem conexão Sun Confidential: Internal Only 28
    29. Sem Conexão • Cliente e servidor não precisam estabelecer nenhuma conexão, isto é, a qualquer momento um processo pode enviar ou receber dados • Exemplos desse tipo de comunicação: > Socket UDP Footnote position, 12 pts. Sun Confidential: Internal Only 29
    30. Sem Conexão Sun Confidential: Internal Only 30
    31. Com Conexão • Deve ser estabelecida uma conexão para depois poderem enviar e receber dados. • Exemplo: > Socket TCP Sun Confidential: Internal Only 31
    32. Com Conexão Sun Confidential: Internal Only 32
    33. Sun Confidential: Internal Only 33
    34. Com Conexão Sun Confidential: Internal Only 34
    35. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 35
    36. Estados de um Socket Footnote position, 12 pts. Sun Confidential: Internal Only 36
    37. Estados de um Socket • Socket Passivo: espera por uma conexão > Usado por Servidores > Closed  listen  established > Obs. O socket TCP também possui outros estados Footnote position, 12 pts. Sun Confidential: Internal Only 37
    38. Estados de um Socket • Socket Ativo: Inicia uma conexão > Usado pelos Clientes > Closed  Established Footnote position, 12 pts. Sun Confidential: Internal Only 38
    39. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 39
    40. API Sockets - Primitivas Footnote position, 12 pts. Sun Confidential: Internal Only 40
    41. Primitivas Função Descrição Socket Cria um novo ponto de comunicação Bind Associa o enrederço IP e a porta ao endpoint local do socket Listen Indica que o socket esta pronto para aceitar requisição de conexões Accept Bloqueia o processo até a chegada de uma requisição de conexão Connect Estabelece uma conexão com um endpoint remoto Read Ler dados de um socket conectado (TCP) Recvfrom Ler dados de um socket não conectado (UDP) Write Envia dados ao endpoint remoto conectado (TCP) Sendto Envia dados ao endpoint remoto informado no parâmetro (UDP) Close Fecha o socket Sun Confidential: Internal Only 41
    42. API Socket Classe Descrição Socket Construtor Socket(InetAddress,int), cria o socket e realiza o bind e connect Construtor Socket(String,int), cria o socket e realiza o bind e connect DatagramSocket Construtor DatagramSocket(int) cria o socket e realiza o bind ServerSocket Construtor ServerSocket(int), cria o socket e realiza o bind e listen Método close Comum às três classes. Realiza o close, fecha o socket e libera a porta. Sun Confidential: Internal Only 42
    43. E o Read e o Write? • Em Java você precisa usar extensões das classes abstratas InputStream e OutputStream. • Os métodos getInputStream e getOutputStream de Socket e ServerSocket retornam um InputStream e output stream Footnote position, 12 pts. Sun Confidential: Internal Only 43
    44. E o Read e o Write? • A escolha do InputStream/OutputStream depende da aplicação, consulte a API. • Pode-se usar diretamente objetos InputStream/OutputStream com as classes Scanner/PrintWriter respectivamente para ler e escrever nos sockets Sun Confidential: Internal Only 44
    45. Hora de Programar!!! Sun Confidential: Internal Only 45
    46. Interagir com Socket de Java Sun Confidential: Internal Only 46
    47. Interagir com Socket de Java Sun Confidential: Internal Only 47
    48. Comunicação com Conexão socket( ) servidor cliente socket( ) bind( ) bind( ) TCP conn. request listen( ) connect( ) accept( send( ) TCP ACK ) recv( ) recv( ) send( ) close( ) close( ) Controlado pelo desenvolvedor processo processo da aplicação socket socket Controlado pelo sistema TCP internet TCP operacional Sun Confidential: Internal Only 48
    49. Comunicação sem Conexão cliente socket( ) socket( ) servidor bind( ) bind( ) send() recv( ) recv( ) send( ) close( ) close( ) Controlado pelo desenvolvedor processo processo da aplicação socket socket Controlado pelo UDP UDP sistema internet operacional Sun Confidential: Internal Only 49
    50. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 50
    51. Cliente em Java Footnote position, 12 pts. Sun Confidential: Internal Only 51
    52. Cliente em Java Sun Confidential: Internal Only 52
    53. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 53
    54. Servidor em Java Sun Confidential: Internal Only 54
    55. Servidor em Java Sun Confidential: Internal Only 55
    56. Hora de Programar!!! Sun Confidential: Internal Only 56
    57. Implementar uma calculadora utilizando Sockets Sun Confidential: Internal Only 57
    58. Hora de Programar!!! Sun Confidential: Internal Only 60
    59. • Nos exemplos anteriores, o servidor é capaz de responder apenas a uma requisição por vez • A primitiva accept é bloqueante! Ela bloqueia o processo até que seja recebida uma requisição • Precisamos atender a vários clientes Footnote position, 12 pts. Sun Confidential: Internal Only 61
    60. Servidor Monothread Sun Confidential: Internal Only 62
    61. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 63
    62. Servidor Multithread Sun Confidential: Internal Only 64
    63. Relembrando Criação de Threads • Implementando a Classe Runnable Footnote position, 12 pts. Sun Confidential: Internal Only 65
    64. Relembrando Criação de Threads • Extendendo a Classe Thread Footnote position, 12 pts. Sun Confidential: Internal Only 66
    65. Servidor Multithread • Podemos criar uma classe para o tratamento da requisição implementando a interface Runnable • Então basta criarmos uma thread a cada chamada do accept Sun Confidential: Internal Only 67
    66. Servidor Multithread Sun Confidential: Internal Only 68
    67. Servidor Multithread Sun Confidential: Internal Only 69
    68. Falamos de servidor multithreaded, mas e quanto ao cliente? Sun Confidential: Internal Only 70
    69. Servidor Multithread Sun Confidential: Internal Only 71
    70. Hora de Programar!!! Sun Confidential: Internal Only 72
    71. Implementar o servidor Multithread Sun Confidential: Internal Only 73
    72. Como ficaria a calculadora MultiThread? Sun Confidential: Internal Only 74
    73. Hora de Programar!!! Sun Confidential: Internal Only 75
    74. Implementar a calculadora Multithread Sun Confidential: Internal Only 76
    75. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 77
    76. Enviando Objetos • Utilizamos as classes > ObjectOutputStream – writeObject(objeto) > ObjectInputStream – readObject() • O objeto precisa implemente Serializable Sun Confidential: Internal Only 78
    77. Sun Confidential: Internal Only 79
    78. Sun Confidential: Internal Only 80
    79. Sun Confidential: Internal Only 81
    80. Hora de Programar!!! Sun Confidential: Internal Only 82
    81. Implementar o envio de Objetos Sun Confidential: Internal Only 83
    82. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 84
    83. DatagramSocket • Podemos enviar e receber pacotes sem a necessidade de uma conexão • São raros, mas alguns problemas podem acontecer > Pacotes podem não chegar > Pacotes podem chegar fora de ordem > Pacotes podem chegar duplicados Sun Confidential: Internal Only 85
    84. DatagramSocket • Utilizamos essa classe para criar o Socket > DatagramSocket(porta) • Utilizamos essa classe para criar o pacote > DatagramPacket(dados, tamanho_dos_dados) Sun Confidential: Internal Only 86
    85. No Servidor • Cria um DatagramSocket e indica em qual porta estará a escuta > DatagramSocket ds = new DatagramSocket(5000); • Cria um DatagramPacket e chama o método receive do socket Sun Confidential: Internal Only 87
    86. No Servidor Sun Confidential: Internal Only 88
    87. No Cliente • Utilizamos essa classe para criar o Socket > DatagramSocket() • Utilizamos essa classe para criar o pacote > DatagramPacket(dados, tamanho_dos_dados, endereco_servidor, porta_servidor) Sun Confidential: Internal Only 89
    88. No Cliente Sun Confidential: Internal Only 90
    89. No Cliente Sun Confidential: Internal Only 91
    90. No Cliente Sun Confidential: Internal Only 92
    91. Hora de Programar!!! Sun Confidential: Internal Only 93
    92. Implementar o envio de dados com DatagramSocket Sun Confidential: Internal Only 94
    93. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 95
    94. Observações Sun Confidential: Internal Only 96
    95. Observações • Muitas coisas podem dar errado na comunicação em rede > Não é possível resolver o nome > O host não pode ser encontrado - offline > A conexão pode ser encerrada abruptamente > O servidor pode demorar demais para responder > Inundação de requisições – quantas threads criar? Sun Confidential: Internal Only 97
    96. Observações • Fique atento! > Trate as exceções > Defina um timeout com o objeto socket: – Socket s = new Socket(“www.google.com”,80); – s.setSoTimeout(60000); //às próximas requisições serão aplicadas um timeout Footnote position, 12 pts. Sun Confidential: Internal Only 98
    97. Como eu faria para meu servidor executar então alguma operação como uma requisição do cliente? • Vocês observaram o comando “Tchau” ? • Lembram do “protocolo”? > Você define as regras para interpretar os dados na sua aplicação! Sun Confidential: Internal Only 99
    98. Agenda 1 – Motivação 2 – Definição 3 – Protocolos 4 – Modelo Cliente-Servidor 5 – Formas de Comunicação 6 – Estados de um Socket 7 – API Socket - Primitivas 8 – Cliente em Java 9 – Servidor em Java 10 – Servidor Multi-thread 11 – Enviando Objetos 12 – DatagramSocket 13 – Observações 14 – RaceFX 100
    99. RaceFX Sun Confidential: Internal Only 101
    100. RaceFX • Jogo desenvolvidor em JavaFX por Raphael Marques (raphaelmarques.wordpress.com/) • Utiliza Sockets para a comunicação entre duas máquinas Footnote position, 12 pts. Sun Confidential: Internal Only 102
    101. Hora de Programar!!! Sun Confidential: Internal Only 103
    102. RaceFX – Trabalho Final do Mini-Curso • Implementar a comunicação entre o cliente e o servidor > Classes: Server e Client • Objetivo > Criar ServerSocket e Socket ou DatagramSocket > Definir Protocolo > Enviar e Receber Dados Sun Confidential: Internal Only 104
    103. Classe Client.java Sun Confidential: Internal Only 105
    104. Construtor Sun Confidential: Internal Only 106
    105. RaceFX – Trabalho Final do Mini-Curso Sun Confidential: Internal Only 107
    106. Método send(SenderCar) Sun Confidential: Internal Only 108
    107. Classe Server.java Sun Confidential: Internal Only 109
    108. Construtor Sun Confidential: Internal Only 110
    109. Sun Confidential: Internal Only 111
    110. Método send(SenderCar) Sun Confidential: Internal Only 112
    111. E o que eu tenho que enviar? Sun Confidential: Internal Only 113
    112. Classe SenderCar.java Sun Confidential: Internal Only 114
    113. Sun Confidential: Internal Only 115
    114. Perguntas Footnote position, 12 pts. Sun Confidential: Internal Only 116
    115. Sockets em Java Elenils on Vieira Embaixador de Campus da Sun Universidade Federal da Paraíba blogs.sun.com/elenilsonvieira elenilson.vieira@sun.com 117

    + Elenilson VieiraElenilson Vieira, 3 months ago

    custom

    450 views, 1 favs, 2 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 450
      • 442 on SlideShare
      • 8 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 21
    Most viewed embeds
    • 6 views on http://blogs.sun.com
    • 2 views on http://planets.sun.com

    more

    All embeds
    • 6 views on http://blogs.sun.com
    • 2 views on http://planets.sun.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?