Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/06/2006, 10:40
rkpost
 
Fecha de Ingreso: noviembre-2005
Mensajes: 117
Antigüedad: 19 años, 4 meses
Puntos: 0
utilizando el package .NET

Hace poco que empece con esto de java y estaba intentando lograr conexion entre dos PCs. En el FAQ encontre un ejemplo para hacerlo pero tira un error sobre un objeto que no esta definido. Por otro lado cuando lo ejecuto me aparece q se conecta y se queda ahi sin posibilidad de escribir nada.

La unica modificacion q hice fue poner como ip el 127.0.0.1 , faltara definir MeterDatos, cosa que hice como un BufferedReader. Y luego agregar un throw al main. Ahi funciona y prendiendo el programa la consola me tira

Código PHP:
Socket conectado!
Nombre Esta On-Line
Nombre Esta On
-Line                                                                                                                                                                                                                                
-> Exception in thread "main" java.lang.NullPointerException
    at Chat
.main(Chat.java:97
La linea 97 es justamente la del MeterDatos.

Aqui el codigo ue tengo, q me falta modificar?

Código PHP:
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import java.net.InetSocketAddress;
import java.net.InetAddress;
import java.io.*;

public class 
Chat extends Thread
{
  static 
DatagramSocket ds=null;
  static 
InetAddress ia=null;
  static 
int puerto 3002;
  static 
String maxCadena null;
  static 
String usuario;
  static 
BufferedReader MeterDatos;
    
  static 
void conectar()
  {
    try
    {
      
InetSocketAddress isa=new InetSocketAddress("127.0.0.1",puerto);
      
ia isa.getAddress();
      
ds = new DatagramSocket(puerto);
      
System.out.println("Socket conectado!");
    }
    catch(
Exception e)
    {
      
System.out.println("Error al conectar\n"+e);
    }
  }
  
  static 
void enviar(String cadena)
  {
    
byte enviar[];
    
int longitud cadena.length();
    
enviar cadena.getBytes();
    try
    {
      
DatagramPacket dp = new DatagramPacket(enviar,longitud,ia,puerto);
      
ds.send(dp);
      
System.out.println(cadena);
    }
    catch(
Exception e)
    {
      
System.out.println("Error al enviar mensaje\n"+e);
    }
  }
  
  static 
void recibir()
  {
    
byte nada[] = maxCadena.getBytes();
    
DatagramPacket dp = new DatagramPacket(nada,maxCadena.length());
    try
    {
      while (
true)
      {
        
ds.receive(dp);
        if (
dp!=null)
        {
          
nada dp.getData();
          for (
int m=0m<=nada.length-1m++)
            
System.out.print((char)nada[m]);
              
System.out.println();
          break;
        }
      }
    }
    catch(
Exception e)
    {
      
System.out.println("Error al recibir mensaje\n"+e);
    }
  }
  
  static 
void cerrar()
  {
    
ds.close();
    
System.out.println("Socket cerrado!");
  }
  
  public static 
void main(String a[])
  {
    
maxCadena = new String("                                                                                                               "+
        
"                                                                                                                                  ");
    
String msg "";
    
conectar();
    
usuario a[0];
    
enviar(usuario " Esta On-Line");
    do{
        
recibir();
        
System.out.print("-> ");
        try {
            
msg MeterDatos.readLine();
        } catch (
IOException e) {
            
// TODO Auto-generated catch block
            
e.printStackTrace();
        }
        if(
msg.equals("exit"))
            break;
        else
            
enviar(usuario " Said: " msg);
    }while(
true);
    
cerrar();
  }