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  
ricardo_1977

Socket UDP

Recommended Posts

ricardo_1977

Boas ,

preciso de fazer 1 trabalho que consiste em sockets(client server) UDP.

alguem pode ajudar?

Share this post


Link to post
Share on other sites
ricardo_1977

a duvida para já é geral.sinceramente não vejo muito de sockets.

estruturando acho que tenho de fazer o client,o server e depois a aplicação que me vai tratar de enviar e receber os dados.

alguem tem algo que ajude no arranque?

Share this post


Link to post
Share on other sites
ricardo_1977

eu ja tenho o client e o server defenidos.

como faço uma classe que me trabalhe com isto?Isto é que me envie e receba os pacotes

aqui vai o codigo

Client.java // Lê uma linha do teclado
// Envia o pacote (linha digitada) ao servidor
// Lê um pacote (linha)do servidor e mostra no vídeo

import java.io.*; // classes para input e output streams e
import java.net.*;// DatagramaSocket,InetAddress,DatagramaPacket

class UDPClient {
   public static void main(String args[]) throws Exception
   {
      // cria o stream do teclado
      BufferedReader inFromUser =
         new BufferedReader(new InputStreamReader
                     (System.in));

      // declara socket cliente
      DatagramSocket clientSocket = new DatagramSocket();
      
      // obtem endereço IP do servidor com o DNS
      InetAddress IPAddress = 
                      InetAddress.getByName("127.0.0.1");
      
      byte[] sendData = new byte[1024];
      byte[] receiveData = new byte[1024];

      // lê uma linha do teclado
      String sentence = inFromUser.readLine();
      sendData = sentence.getBytes();
      
      // cria pacote com o dado, o endereço do server e porta do servidor
      DatagramPacket sendPacket =
         new DatagramPacket(sendData, sendData.length, IPAddress, 9876);

      //envia o pacote
      clientSocket.send(sendPacket);
      
      // declara o pacote a ser recebido
      DatagramPacket receivePacket =
         new DatagramPacket(receiveData, receiveData.length);

      // recebe pacote do servidor
      clientSocket.receive(receivePacket);
      
      // separa somente o dado recebido 
      String modifiedSentence =
         new String(receivePacket.getData());
      
      // mostra no vídeo
      System.out.println("FROM SERVER:" + modifiedSentence);

      // fecha o cliente
      clientSocket.close();
   }
}

server.java

// Recebe um pacote de algum cliente

// Separa o dado, o endereço IP e a porta deste cliente

// Transforma em maiúscula

// Envia ao cliente, usando o endereço IP e a porta recebidos

// Volta ao início

import java.io.*;

import java.net.*;

class UDPServer {

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

      {

        // cria socket do servidor com a porta 9876

        DatagramSocket serverSocket = new

                              DatagramSocket(9876);

           

            byte[] receiveData = new byte[1024];

            byte[] sendData = new byte[1024];

            while(true)

              {

                  // declara o pacote a ser recebido

                  DatagramPacket receivePacket =

                    new DatagramPacket(receiveData,

                              receiveData.length);

                 

                  // recebe o pacote do cliente

                  serverSocket.receive(receivePacket);

                 

                  // pega os dados, o endereço IP e a porta do cliente

                  // para poder mandar a msg de volta

                  String sentence = new String(

                              receivePacket.getData());

                  InetAddress IPAddress =

                              receivePacket.getAddress();

                  int port = receivePacket.getPort();

                 

                  // transforma em maiúsculas

                  String capitalizedSentence =

                              sentence.toUpperCase();

                  sendData = capitalizedSentence.

                              getBytes();

                  // monta o pacote com enderço IP e porta

                  DatagramPacket sendPacket =

                  new DatagramPacket(sendData, sendData.length,

                                    IPAddress, port);

                 

                  // envia ao cliente

                  serverSocket.send(sendPacket);

              }

      }

}

Share this post


Link to post
Share on other sites
mribeiro

Não olhei muito para o código porque essa ultima dúvida não e bem de java...

Uma vez que estão no método main nem precisas de criar classe nenhuma para usares isso. Ao arrancares um projecto automaticamente o método main é executado

De forma rápida: é só correr os dois.

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.