将数据发送到服务器时获取错误NullPointerExeption

时间:2014-04-01 09:36:30

标签: java nullpointerexception

在运行应用程序时,我收到错误log.e消息"客户端发送错误"和

04-01 16:46:58.001: E/ClientActivity(7741): Client Send Error:
04-01 16:46:58.001: W/System.err(7741): java.lang.NullPointerException
04-01 16:46:58.002: W/System.err(7741):     atedu.dongthang.controller.AppDelegate$ClientThread.sendMessage(AppDelegate.java:90)
04-01 16:46:58.002: W/System.err(7741):     at edu.dongthang.controller.AppDelegate.sendMessage(AppDelegate.java:33)
04-01 16:46:58.002: W/System.err(7741):     at edu.dongthang.controller.Controller.sendToAppDel(Controller.java:101)
04-01 16:46:58.002: W/System.err(7741):     at edu.dongthang.controller.Controller.onStart(Controller.java:64)
04-01 16:46:58.002: W/System.err(7741):     at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1136)
04-01 16:46:58.002: W/System.err(7741):     at android.app.Activity.performStart(Activity.java:4489)
04-01 16:46:58.003: W/System.err(7741):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2050)
04-01 16:46:58.003: W/System.err(7741):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
04-01 16:46:58.003: W/System.err(7741):     at android.app.ActivityThread.access$600(ActivityThread.java:134)
04-01 16:46:58.003: W/System.err(7741):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
04-01 16:46:58.003: W/System.err(7741):     at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 16:46:58.004: W/System.err(7741):     at android.os.Looper.loop(Looper.java:154)
04-01 16:46:58.004: W/System.err(7741):     at android.app.ActivityThread.main(ActivityThread.java:4624)
04-01 16:46:58.004: W/System.err(7741):     at java.lang.reflect.Method.invokeNative(Native Method)
04-01 16:46:58.004: W/System.err(7741):     at java.lang.reflect.Method.invoke(Method.java:511)
04-01 16:46:58.004: W/System.err(7741):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:809)
04-01 16:46:58.005: W/System.err(7741):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576)
04-01 16:46:58.005: W/System.err(7741):     at dalvik.system.NativeStart.main(Native Method)

我认为这是产生错误的代码

package edu.dongthang.controller;
public class AppDelegate extends Application {

public ClientThread client;
public int mouse_sensitivity = 1;
public boolean connected = false;
public boolean network_reachable = true;

public void onCreate(){
    super.onCreate();
}

public void createClientThread(String ipAddress, int port){
    client = new ClientThread(ipAddress, port);

    Thread cThread = new Thread(client);
    cThread.start();
}

public void sendMessage(String message){
    try {
        client.sendMessage(message);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public void stopServer(){
    if(connected){
        client.closeSocket();
    }
}

// ClientThread Class implementation
 public class ClientThread implements Runnable {

    public InetAddress serverAddr;
    public int serverPort;
    private DatagramSocket socket;
    byte[] buf = new byte[1000];

    public ClientThread(String ip, int port){
        try{
            serverAddr = InetAddress.getByName(ip);
        }
        catch (Exception e){
            Log.e("ClientActivity", "C: Error", e);
        }
        serverPort = port;
    }

    //Opens the socket and output buffer to the remote server
    public void run(){
        try {
            socket = new DatagramSocket();
            if(socket != null){
                 socket.setSoTimeout(3000);
                 connected = testConnection();
                 if(connected)
                    surveyConnection();
            }

        }
        catch (Exception e) {
            Log.e("ClientActivity", "Client Connection Error", e);
        }
    }

    public void sendMessage(String message){
        try {
            buf = message.getBytes();
            DatagramPacket out = new DatagramPacket(buf, buf.length, serverAddr, serverPort);   
            socket.send(out);
            network_reachable = true;
        }
        catch (Exception e){ 
            Log.e("ClientActivity", "Client Send Error:");
            if(e.getMessage().equals("Network unreachable")){
                Log.e("ClientActivity", "Netork UNREACHABLE!!!!:");
                network_reachable = false;
            }
            closeSocketNoMessge();
        }

    }

    public void closeSocketNoMessge(){
        socket.close();
        connected = false;
    }

    public void closeSocket(){
        sendMessage(new String("Close"));
        socket.close();
        connected = false;
    }

    private boolean testConnection(){
            try {
                 Log.d("Testing", "Sending");
                 //doi nguoc lai
                 if(!connected)buf = new String("Connectivity").getBytes();
                 else buf = new String("connected").getBytes();

                 DatagramPacket out = new DatagramPacket(buf, buf.length, serverAddr, serverPort);
                 socket.send(out);
                 Log.d("Testing", "Sent");
                }
            catch(Exception e){return false;}

            try{
                Log.d("Testing", "Receiving");
                DatagramPacket in = new DatagramPacket(buf, buf.length);
                socket.receive(in);
                Log.d("Testing", "Received");
                return true;
            }
            catch(Exception e){return false;}
    }

    private void surveyConnection(){
        int count = 0;
        while(connected){
            try{Thread.sleep(1000);}
            catch(Exception e){}

            if(!testConnection())
                count++;
            else
                count = 0;

            if(count == 5){
                closeSocket();
                return;
            }
        }
    }

}
}
还有一个问题。嗯,在运行应用程序时,我在logcat窗口中看到消息为

04-01 16:49:28.539: V/Resources(8088): Preloading resource #10805c2(res/drawable-hdpi/textfield_search_right_default_holo_light.9.png)
04-01 16:49:28.539: V/Resources(8088): Preloading resource #108057e(res/drawable/tab_indicator_holo.xml)
04-01 16:49:28.548: V/Resources(8088): Preloading resource #108058f(res/drawable-hdpi/tab_unselected_holo.9.png)
04-01 16:49:28.548: V/Resources(8088): Preloading resource #108058a(res/drawable-hdpi/tab_selected_holo.9.png)
04-01 16:49:28.548: V/Resources(8088): Preloading resource #108058e(res/drawable-hdpi/tab_unselected_focused_holo.9.png)
04-01 16:49:28.548: V/Resources(8088): Preloading resource #1080589(res/drawable-hdpi/tab_selected_focused_holo.9.png)
04-01 16:49:28.549: V/Resources(8088): Preloading resource #1080590(res/drawable-hdpi/tab_unselected_pressed_holo.9.png)
04-01 16:49:28.549: V/Resources(8088): Preloading resource #108058b(res/drawable-hdpi/tab_selected_pressed_holo.9.png)
04-01 16:49:28.549: V/Resources(8088): Preloading resource #1080470(res/drawable/quickcontact_badge_overlay_dark.xml)
04-01 16:49:28.555: V/Resources(8088): Preloading resource #1080474(res/drawable-hdpi/quickcontact_badge_overlay_normal_dark.9.png)
04-01 16:49:28.555: V/Resources(8088): Preloading resource #1080476(res/drawable-hdpi/quickcontact_badge_overlay_pressed_dark.9.png)
04-01 16:49:28.555: V/Resources(8088): Preloading resource #1080473(res/drawable/quickcontact_badge_overlay_light.xml)
04-01 16:49:28.560: V/Resources(8088): Preloading resource #1080475(res/drawable-hdpi/quickcontact_badge_overlay_normal_light.9.png)
04-01 16:49:28.560: V/Resources(8088): Preloading resource #1080477(res/drawable-hdpi/quickcontact_badge_overlay_pressed_light.9.png)

在我的forder drawable-hdpi没有那张照片。所以,告诉我,这里有问题!!!

所以,请帮帮我,告诉我哪里错了 非常感谢!!!!

1 个答案:

答案 0 :(得分:0)

您是否检查过邮件是否为空?日志似乎指向该变量。