Cliente/Servidor duvida sobre socket

1 resposta
F

Pessoal tenho a classe abaixoq ue representa meu servidor que irá receber conexões de clientes. Minha dúvida é como eu faço um método no cliente que conecta no servidor ? E depois eu possa trabalhar com essa conexão enviando mensagens ?

########################################

Server

########################################

import <a href="http://java.io">java.io</a>.<em>;

import <a href="http://java.net">java.net</a>.</em>;

import java.awt.<em>;

import java.awt.event.</em>;

import javax.swing.<em>;

import java.util.</em>;

import java.sql.*;
public class Server extends JFrame {

private JTextArea display;

//private static Hashtable listaIp;

private DatagramPacket sendPacket, receivePacket;

private DatagramSocket socket;

private int aux = 1;

private static Hashtable listaIps;
static {

listaIps = new Hashtable();

}
public Server()

{

super( Servidor );
display = new JTextArea();
  getContentPane().add( new JScrollPane( display),
                        BorderLayout.CENTER );
  setSize( 400, 300 );
  show();

  try {
     socket = new DatagramSocket( 5000 );
  }
  catch( SocketException se ) {
     se.printStackTrace();
     System.exit( 1 );
  }

}

/**

* Adiciona na hashtable o nome e o ip do usuário que conectar

* @param nome String

* @param ip String

*/

public void addUsuario(String nome, String ip)

{

listaIps.put(nome, new String(ip));

}
public void waitForPackets()

{

while ( true ) {

try {

// Seta o pacote

byte data[] = new byte[ 100 ];

receivePacket = new DatagramPacket( data, data.length  );
// Espera por um pacote
        socket.receive( receivePacket );





        // Processa os pacotes
        display.append( "\nPacote recebido:" +
           "\nDo host: " + receivePacket.getAddress() +
           "\nHost port: " + receivePacket.getPort() +
           "\nCaracteres: " + receivePacket.getLength() +
           "\nTexto:\n\t" +
           new String( receivePacket.getData(), 0,
                       receivePacket.getLength() ) );

        // manda de volta para os clientes
        display.append( "\n\nMandando para os clientes...");
        sendPacket =
           new DatagramPacket( receivePacket.getData(),
                               receivePacket.getLength(),
                               receivePacket.getAddress(),
                               receivePacket.getPort() );
        socket.send( sendPacket );
        display.append( "Pacote enviado.\n" );
        display.setCaretPosition(
           display.getText().length() );
     }
     catch( IOException io ) {
        display.append( io.toString() + "\n" );
        io.printStackTrace();
     }
  }

}

public static void main( String args[] )

{

Server app = new Server();
app.addWindowListener(
     new WindowAdapter() {
        public void windowClosing( WindowEvent e )
        {
           System.exit( 0 );
        }
     }
  );

  app.waitForPackets();

}

public void desconectar()
{

}

}

1 Resposta

A

basicamente em socket.

import java.io.;
import java.net.
;

public class Client {

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

BufferedReader br;

InputStreamReader isr;

InputStream is;

Socket s = new Socket(localhost,5000);

is = s.getInputStream();

isr = new InputStreamReader(is);

br = new BufferedReader(isr);

System.out.println(br.readLine());

s.close();

}

}

para saber mais … da uma olhda na documentação
http://java.sun.com/j2se/1.4.2/docs/api/index.html

e um exemplo pratico …
http://www.j2b.com.br/modules.php?name=Sections&op=printpage&artid=12

Criado 7 de março de 2005
Ultima resposta 7 de mar. de 2005
Respostas 1
Participantes 2