当前位置: 代码迷 >> Android >> 关于socket错误java.net.SocketException:Bad file number
  详细解决方案

关于socket错误java.net.SocketException:Bad file number

热度:150   发布时间:2016-05-01 17:36:13.0
关于socket异常java.net.SocketException:Bad file number
如题,我用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()这个地方出错

------解决方案--------------------
是不是提示socket关闭了 可能是因为你在服务器那边线程结束了,所以对客户端对应的socket关闭了,也就导致客户端的socket关闭。所以要使服务器的socket不要关闭就行了。
------解决方案--------------------
为什么要用DataInputStream,改成BufferedInputStream试试
  相关解决方案