Redes de Computadores
Por: Jéssica da Silva • 30/4/2016 • Relatório de pesquisa • 709 Palavras (3 Páginas) • 261 Visualizações
Jessica Priscila da Silva 21060312
Rodrigo Amador Medeiros Magalhães 11058111
Sockets UDP
É possível definir socket com sendo o intermédio entre o cliente e o servidor. Através dele é possível que o processo envie e receba mensagens.
Um dos tipos de protocolos usados para serviço de transporte via socket, é o UDP, que utiliza datagramas não confiáveis.
- Executar cliente antes do servidor
Se o cliente for executado antes do servidor, o mesmo não receberá nenhuma resposta do servidor, ainda que ele seja conectado depois.
Isso acontece porque o servidor recebe o pedido do cliente, analisa e manda uma resposta. Se o cliente é executado antes, não tem como o servidor receber a mensagem.
Um servidor deve rodar “para sempre”, enquanto o cliente pode apenas fazer uma solicitação e “desligar-se”.
Altere as portas do servidor e cliente. O que acontece se as portas forem diferentes?
- Executar cliente e servidor com portas diferentes
Se cliente e o servidor estiverem com portas diferentes, o cliente não receberá nenhuma resposta do servidor e vice-e-versa.
- Enviar mais de uma mensagem do usuário para o servidor
Para enviar mais de uma mensagem do usuário, não é necessário modificar o servidor, pois as mensagens estão sendo enviadas pelo cliente sem haja intervenção do mesmo.
- Servidor não responde a um usuário indesejado
É possível modificar o programa para que o servidor não responda a um usuário indesejado.
O servidor precisará ter uma lista dos IP’s que não responderá, como mostra o código abaixo:
package socketudp;
// created on 29/09/2010 at 22:33
import java.io.*;
import java.net.*;
class UDPServer {
public static void main(String args[]) throws Exception {
DatagramSocket serverSocket = new DatagramSocket(9876);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
//LEVAR EM CONSIDERAÇÃO UM VETOR COM CASOS JÁ EXISTENTES
InetAddress A[] = new InetAddress[50];
boolean acesso = false;
while (true) {
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
System.out.println("Servidor aguardando...");
serverSocket.receive(receivePacket);
String sentence = new String(receivePacket.getData());
System.out.println("Mensagem recebida: " + sentence);
InetAddress IPAddress = receivePacket.getAddress();
for (int i = 0; i < 50; i++) {
if (A[i] == IPAddress) {
...