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楼的之后有什么错误信息打印吗 --------------------编程问答--------------------
关键是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相关