我正在尝试做的事情: 我现在正在尝试构建一个测试应用程序,只需在Android手机(4.2.2)(作为客户端)上的应用程序与在PC上运行的Java应用程序(Windows8)(作为服务器)通过套接字连接。
我已经完成的工作: 我已经在PC上的Java中为客户端和服务器编写了程序,并对其进行了积极的测试(建立了Connection)。
网络: 我的手机和PC都连接到我家里的wifi。PC上的 ipconfig 显示地址 192.168.56.1, 而登录路由器时,其显示我的计算机的地址为 192.168.0.108 (可能我不懂网络:P)。
代码: 客户端(Android)
public void connectPC(View view) { try { clientSocket = new Socket("192.168.0.108",1025); outstream = clientSocket.getOutputStream(); instream = clientSocket.getInputStream(); data_out = new DataOutputStream(outstream); data_in = new DataInputStream(instream); statusView.setText("Connected!"); } catch (Exception e) { statusView.setText("Error: "+e.getMessage()); } }
服务器:
import java.net.*; import java.io.*; public class ServerSide extends Thread { ServerSocket serverSocket; public ServerSide(int port) throws IOException { serverSocket = new ServerSocket(1025); serverSocket.setSoTimeout(10000); } public void run() { while(true) { System.out.println("Waiting for client on port : "+ serverSocket.getLocalPort()); Socket server; try { server = serverSocket.accept(); System.out.println("Connected to : " +server.getRemoteSocketAddress()); } catch (IOException e) { // TODO Auto-generated catch block System.out.println(e.getMessage()); } } } public static void main(String... args) { int port=6066; try { Thread t = new ServerSide(port); t.start(); } catch(IOException e) { System.out.println(e.getMessage()); } } }
问题:- 连接根本无法建立,catch块将 e.getMessage() 显示为null。
PS 我也尝试了 192.168.56.1 ip地址。并在清单文件中添加了 使用权限
在这方面有任何帮助。
您需要打印堆栈跟踪信息,而不仅仅是异常消息。这将为您提供更多信息来调试问题……包括异常的名称以及引发异常的位置。
同样,捕获Exception并尝试从中恢复也是一个坏主意。捕捉Exception可能会捕获到您从未想到的各种异常。从您没有想到的异常中恢复是有风险的……因为您_无法_ 确定这样做是安全的。通常最好让应用程序死掉…
Exception