发送此UDP包时为什么会出错?

时间:2016-09-13 16:07:42

标签: java nullpointerexception udp send

我有这个主要课程:

public class Main {

    public static void main(String[] args) {
        Server server = new Server(8192);

        InetAddress address = null;
        try {
            address = InetAddress.getByName("192.168.178.249");
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        int port = 8192;
        String s = "het werkt";
        byte[] sdata = s.getBytes();

        server.send(sdata, address, port);
    }
}

这个服务器类:

public class Server {

    private int port;
    private Thread listenThread;
    private boolean listening = false;
    private DatagramSocket socket;
    private final int MAX_PACKET_SIZE = 1024;
    private final byte[] receivedDataBuffer = new byte[MAX_PACKET_SIZE * 10];

    public Server(int port){
        this.port = port;
    }

    public int getPort() {
        return port;
    }
    public void start(){
        try {
            socket = new DatagramSocket(port);
        } catch (SocketException e) {
            e.printStackTrace();
        }

        listening = true;

        listenThread = new Thread(new Runnable(){
            @Override
            public void run() {
                listen();
            }
        });
        listenThread.start();
    }

    private void listen() {
        while(listening) {

            DatagramPacket packet = new DatagramPacket(receivedDataBuffer, MAX_PACKET_SIZE);

            try {
                socket.receive(packet);
            } catch (IOException e) {
                e.printStackTrace();
            }
            process(packet);

        }
    }

    private void process(DatagramPacket packet){
        byte[] data = packet.getData();
        System.out.println(new String(data));
    }

    public void send(byte[] data, InetAddress address, int port){
        assert(socket.isConnected());
        DatagramPacket packet = new DatagramPacket(data, data.length, address, port);

        try {
            socket.send(packet);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

它返回此错误:

Exception in thread "main" java.lang.NullPointerException
  at com.jakibah.javahacker.Server.send(Server.java:74)
  at com.jakibah.javahacker.Main.main(Main.java:22)`

第74行是:} catch (IOException e) { 第22行是这样的:server.send(sdata, address, port);

为什么会返回此错误,我该如何解决?是因为我发送字符串的方式吗?

0 个答案:

没有答案