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

ricardo_1977

Socket UDP

Mensagens Recomendadas

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?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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);

              }

      }

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

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.