当前位置:编程学习 > JAVA >>

InputStream空指针异常

in = new Socket("127.0.0.1",8888).getInputStream();

while(true){
byte[] buff = new byte[200];
in.read(buff); //这一行怎么会报空指针异常???

}

--------------------编程问答-------------------- 说明 in 对象是 null。

你这个不是完整代码吧?估计你创建Socket的时候,已经抛出异常,但你忽略了。 --------------------编程问答-------------------- public class Client1{
InputStream in;

public void go() {

try {
Socket client = new Socket("127.0.0.1", 5000);
ta.append("Connect to:" + client.getInetAddress().getHostName()
+ "\n\n");
in = client.getInputStream();
br = new BufferedReader(new InputStreamReader(in));
out = client.getOutputStream();
bw = new BufferedWriter(new OutputStreamWriter(out));
} catch (IOException ioe) {
}
while (true) {
try {
byte[] buf = new byte[200];

in.read(buf,0,buf.length);

String str = new String(buf);
ta.append("Server say:" + str);
ta.append("\n");
} catch (IOException e) {
System.out.print(e.getMessage());
}
}
}




}
就是这样了 --------------------编程问答-------------------- 果然如我所料,请修改代码:

} catch (IOException ioe) {
  ioe.printStackTrace(); // 增加这句,输出异常信息。
}


后面的while循环,用if语句框起来:
if (in != null) {
  ...
} --------------------编程问答-------------------- 出来了,3Q您老了... --------------------编程问答-------------------- 没有用啊,如果这样就不执行那一段代码了。有什么解决的办法没啊??? --------------------编程问答-------------------- 加上3楼的之后有什么错误信息打印吗 --------------------编程问答--------------------
引用 5 楼  的回复:
  没有用啊,如果这样就不执行那一段代码了。有什么解决的办法没啊???


关键是ioe.printStackTrace();所显示的错误信息是什么?把错误信息弄出来才能知道真实问题是什么。 --------------------编程问答-------------------- 服务器端代码贴一下 现在不是in 是空的么 看看是不是读取服务器流有问题 --------------------编程问答-------------------- 你创建的对象 in 已经为null了 --------------------编程问答-------------------- class  got  implements Runnable{

public void run() {
 try
        {
            Socket client=new Socket("127.0.0.1",5000);
            textView.setText("Connect to:"+client.getInetAddress().getHostName()+"\n\n");
            in=client.getInputStream();
            Log.i("SCActivity", in+"1");
            br=new BufferedReader(new InputStreamReader(in));
            out=client.getOutputStream();
            bw=new BufferedWriter(new OutputStreamWriter(out));
        }
        catch(IOException ioe)
        {}
        
        while(true)
        {
            try
            {
                byte[] buf=new byte[200];
                Log.i("SCActivity", in+"2");
                in.read(buf);    //空指针
                Log.i("SCActivity", in+"3");
                String str=new String(buf);
                textView.setText(textView.getText().toString().trim()+"Server say:"+str);
                textView.setText(textView.getText().toString()+"\n");
            }
            catch(IOException e)
            {
                System.out.print(e.getMessage());
            }
        }
}
--------------------编程问答-------------------- 06-18 09:19:54.380: ERROR/AndroidRuntime(8337): java.lang.NullPointerException
06-18 09:19:54.380: ERROR/AndroidRuntime(8337):     at com.yy.sc.SCActivity$got.run(SCActivity.java:142)
06-18 09:19:54.380: ERROR/AndroidRuntime(8337):     at java.lang.Thread.run(Thread.java:856)
--------------------编程问答-------------------- 06-18 09:19:54.380: ERROR/AndroidRuntime(8337): java.lang.NullPointerException
06-18 09:19:54.380: ERROR/AndroidRuntime(8337):     at com.yy.sc.SCActivity$got.run(SCActivity.java:142)
06-18 09:19:54.380: ERROR/AndroidRuntime(8337):     at java.lang.Thread.run(Thread.java:856)
--------------------编程问答-------------------- 兄弟,知道你错在哪了吗?我和你犯了一样的错误
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,