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=0; m<=nada.length-1; m++)
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();
}
}