Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Sergiosaturn

Problema com sockets udp

Recommended Posts

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

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.