A手机:开wifi热点,做socket server端
B手机:做socket client端,连接A手机的socket server
socket连接建立后,两边都调用读阻塞;
关闭A手机热点或关闭B手机wifi:client端能捕获异常 recvfrom fail :ETIMEDOUT,server无法捕获请问这是什么原因,有没有办法让server端也捕获到异常?socket

解决方案 »

  1.   

    服务端代码:
                    Thread a = new Thread() {
                        public void run() {
                            ServerSocket socket;
                            try {
                                socket = new ServerSocket(40000);
                                Socket client = socket.accept();
                                if (null != client) {
                                    InputStream in = client.getInputStream();
                                    BufferedReader reader = new BufferedReader(
                                            new InputStreamReader(in));
                                    reader.readLine();
                                }
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    };
                    a.start();客户端代码:
                    Thread a = new Thread() {
                        public void run() {
                            try {
                                Socket server = new Socket();
                                SocketAddress socketAddress = new InetSocketAddress("192.168.43.1",
                                        40000);
                                server.connect(socketAddress);
                                InputStream in = server.getInputStream();
                                BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                                reader.readLine();
                            } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    };
                    a.start();
      

  2.   

    刚试了把开热点的机器作为客户端,这种情况下断网,socket 服务端可以捕获异常recvfrom fail :ETIMEDOUT现在问题比较明确了,是作为热点的一端无法捕获此异常,有人知道原因吗,请回一下,在线等,谢谢