Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sergiosaturn

Problema com sockets udp

Mensagens Recomendadas

Sergiosaturn

Saudações programadores  ;)

Recentemente eu tive que começar a fazer um projecto em que vou ter de trabalhar com sockets udp. Como todo o bom programador eu primeiro fiz uma pesquisa na internet para aprender mais sobre esse assunto. Durante essa pesquisa eu encontrei alguns pedaços de codigo, e entao eu fui copiando esses pedaços de codigo para o compilador. :D

Compila sem problemas no entanto a execução na corre muito bem :(

Este codigo tem duas classes o cliente e o servidor. Aqui esta o codigo da classe Cliente.

import java.io.* ; // streams

import java.net.* ; // sockets

public class Cliente {

public static void main(String[] args) throws Exception {

    System.out.println("Bem vindo ao cliente");

   

    DatagramSocket clientSocket = new DatagramSocket();

   

    InetAddress IPAdress = InetAddress.getByName("www.javasoft.com"); 

   

    byte[] sendData = new byte[1024];

    byte[] receiveData = new byte[1024];

   

    String sentence = "Ola mundo";

   

    sendData = sentence.getBytes();

   

    System.out.println("A criar pacote");

   

    DatagramPacket sendPacket = new DatagramPacket(sendData,sendData.length,IPAdress,5000);

   

    System.out.println("A enviar pacote");

   

    clientSocket.send(sendPacket);

   

    System.out.println("A criar receive packet");

   

    DatagramPacket receivePacket = new DatagramPacket(receiveData , receiveData.length);

   

    System.out.println("A criar receber resposta");

   

    clientSocket.receive(receivePacket);

   

    System.out.println("A criar string de reposta");

   

    String modifiedSentence = new String(receivePacket.getData(),0,receivePacket.getLength());

   

    System.out.println("FROM SERVER:" + modifiedSentence);

   

    System.out.println("A fechar socket");

   

    clientSocket.close();

   

    }   

}

E aqui esta o codigo da classe Servidor.

import java.io.* ; // streams

import java.net.* ; // sockets

public class Servidor {

public static void main(String[] args) throws Exception  {

  System.out.println("Bem vindo ao servidor");

 

  System.out.println("A criar socket");

 

  DatagramSocket serverSocket = new DatagramSocket(5000);

 

  byte[] receiveData = new byte[1024];

  byte[] sendData = new byte[1024];

 

    while(true) {

     

      System.out.println("A criar pacote");

       

      DatagramPacket receivePacket = new DatagramPacket(receiveData , receiveData.length);

     

      System.out.println("A receber pacote de cliente");

     

      serverSocket.receive(receivePacket);

     

      System.out.println("Pacote recebido a criar string");

     

      String sentence = new String(receivePacket.getData(),receivePacket.getLength());

     

      System.out.println("String recebida " + sentence);

     

      System.out.println("Fazer operacoes");

     

      InetAddress IPAddress = receivePacket.getAddress();

     

      int port = receivePacket.getPort();

     

      String capitalizedSentence = sentence.toUpperCase();

     

      sendData = capitalizedSentence.getBytes();

     

      System.out.println("A criar pacote de resposta");

     

      DatagramPacket sendPacket = new DatagramPacket(sendData , sendData.length , IPAddress , port);

     

      System.out.println("A enviar resposta");

     

      serverSocket.send(sendPacket);

     

    }

}

}

Ao executar este codigo o cliente imprime no ecra que ja enviou o pacote e fica a espera de uma resposta do servidor , enquanto isso o servidor imprime no ecra que esta a espera de um pacote vindo do cliente que supostamente ja devia ter recebido. :wallbash:

Eu tentei pesquisar na internet as melhores portas para trabalhar com o socket, no entanto despois de modificar a porta o resultado foi o mesmo. :(

Se alguem que me pudesse ajudar eu agradecia. :)

Obrigado pela disponibilidade e adeus. :bye2:

Se não perceberem o que eu escrevi por favor escrevam que eu vou tentar explicar melhor. :D

 

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.