2014-02-14 2 views
1

Это работает на андроид эмулятор устройства, который работает на том же компьютере, я пытаюсь отправить UDP-пакетов, чтобы (Является ли это ошибка?)UDP пакетов NPE - Java

Отправить код:

private byte[] buf = new byte[1]; 

private DatagramPacket p; 

private int port = 4442; 
private InetAddress ip; 
private DatagramSocket s; 
try { 
     ip = InetAddress.getByName(Dataholder.ip);//This one is holding the IP , it is confirmed that it is stored 
    } catch (UnknownHostException e) {} 

    try { 
     s = new DatagramSocket(port , ip); 
    } catch (SocketException e) {} 
private void sendPacket(int num){////NUM IS 1 DIGIT ONLY! 
    buf = Integer.toString(num).getBytes(); 
    p = new DatagramPacket(buf , buf.length, ip,port); 
    try { 
     s.send(p);//Null pointer this line 
    } catch (IOException e) {} 
} 

И получив код:

byte[] data = new byte[1]; 

    s = new DatagramSocket(4442); 
    p = new DatagramPacket(data, data.length); 
while(true){ 

    s.receive(p); 
    } 

Я на самом деле с помощью IPv4-адреса компьютера ...

+0

Где происходит ошибка? – Smutje

+0

Его комментарий .... s.send (p); – user3310358

ответ

0

Большинство Лик ely ваш DatagramSocket не создается экземпляр правильно. Вероятно, это исключение, которое вы глотаете, как чемпион.

Не проглатывайте подобные исключения. Исключения говорят вам полезные вещи. Если вы разместите что-то простое, как System.out.println внутри этого блока catch, вероятно, вы увидите, что new DatagramSocket бросает какое-то исключение.

+0

Новый DatagramSocket не генерирует исключение, я не могу узнать, почему s.send (p); приводит к сбою виртуальной машины. – user3310358

+0

Вы сказали, что получаете NPE. Если это так, 's', скорее всего, будет null. Если нет, просмотрите трассировку стека, чтобы узнать, откуда происходит исключение. Возможно, ваш пакет равен NULL. Я не знаю. – SirBraneDamuj

Смежные вопросы