当前位置: 代码迷 >> Android >> 新建socket连接没有响应,该如何处理
  详细解决方案

新建socket连接没有响应,该如何处理

热度:101   发布时间:2016-05-01 21:55:06.0
新建socket连接没有响应
java服务端,android客户端,真机测试。用的是同步阻塞socket,在new Socket(SERVER_IP, SERVER_PORT)时总是无响应。
用无线映射IP地址和绝对地址都试过,用同一个路由器的网和不同路由器的网也尝试过,都不行。另外尝试过在客户端设置与服务端不一样的地址,仍然是无响应,如果客户端设置本地地址那会直接exception。
服务端和客户端的IP设置肯定总是一致的,不知道是什么问题,求指点。

服务端
Java code
// 服务器端口号private final int SERVER_PORT = 9000;// 服务器地址private final String SERVER_ADDRESS = "192.168.1.102";    public ChatServer() {        try {            // 获取服务器IP地址            inetAddress = InetAddress.getByName(SERVER_ADDRESS);            // 创建服务端Socket连接            serverSocket = new ServerSocket(SERVER_PORT, Integer.MAX_VALUE,                    inetAddress);            // 启动后台线程等待客户端进行连接            new Thread(runnable).start();            // 向控制台输出服务器启动成功状态            System.out.println("服务器已经启动...");            System.out.println(serverSocket.getInetAddress()+" "+serverSocket.getLocalPort());        } catch (UnknownHostException ex) {            System.out.println("服务器地址无效.");        } catch (BindException ex) {            System.out.println("服务器网络配置冲突.");        } catch (Exception ex) {            ex.printStackTrace();        }    }


客户端 这是在同一个路由器网络中
Java code
    // 服务器地址    private final String SERVER_HOST_IP = "192.168.1.102";    // 服务器端口    private final int SERVER_HOST_PORT = 9000;private void initClientSocket() {                try {            // 连接服务器            socket = new Socket(SERVER_HOST_IP, SERVER_HOST_PORT);        } catch (UnknownHostException e) {            Toast.makeText(MainActivity.this,                    getString(R.string.error_msg_unknow_host),                    Toast.LENGTH_LONG).show();            e.printStackTrace();        } catch (IOException e) {            Toast.makeText(MainActivity.this,                    getString(R.string.error_msg_cannot_connect),                    Toast.LENGTH_LONG).show();            e.printStackTrace();        }    }


------解决方案--------------------
inetAddress = InetAddress.getByName(SERVER_ADDRESS); 
看看这句是否还是返回了你想要的IP地址,另外本机服务器端没必要写具体IP地址吧,要不换个IP还不麻烦死,只需要客户端知道服务端的IP就行。
------解决方案--------------------
是在模拟器下还是真机?

模拟器可能存在网络问题
------解决方案--------------------
lz应该不会是没有设置uses-permission吧?
  相关解决方案