如题,我用socket连接服务器,在读取服务器信息的时候出现了这个错误。求大神帮忙解答啊代码如下
public void socketconnect()
{   
byte[] b = new byte[1024];
try {
 socket = new Socket(IPURL, PORT); 
 dos = new DataOutputStream(socket.getOutputStream()); 
 dis = new DataInputStream(socket.getInputStream());
 dos.write(GETbyte);//向服务器写数据 
 dos.flush();
 
new Thread(){
                 public void run() {
try {                     
// 接收服务器的反馈
// BufferedReader br = new BufferedReader(
// new InputStreamReader(socket.getInputStream()));
String msg = null;
System.out.println("开始读取");
while (dis.read() != -1)
System.out.println("接收服务器的反馈:"+msg);
} catch (IOException e) {                    
e.printStackTrace();
}
    } 
            }.start(); }catch (IOException e) {
Toast.makeText(activity, "连接服务器失败。。请查看服务器是否开启。", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
finally
{
try {
dis.close();
dos.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在dis.read()这个地方出错

解决方案 »

  1.   

    是不是提示socket关闭了  可能是因为你在服务器那边线程结束了,所以对客户端对应的socket关闭了,也就导致客户端的socket关闭。所以要使服务器的socket不要关闭就行了。
      

  2.   

    BufferedReader br = new BufferedReader(
    // new InputStreamReader(socket.getInputStream()));
    这句如果打开就提示socket关闭了,但是我注释了啊,所以它提示的是bad file number,同事说是我给它发的数据它还在读,但是我已经开始读它给我的数据了所以堵塞了。。这个该咋处理?
      

  3.   

    为什么要用DataInputStream,改成BufferedInputStream试试
      

  4.   

    哦,是这样的哈,我给服务器发送的是字节数据,所以要用DataInputStream这个流。。