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吧?