如何让简单的Android客户端和PC服务器工作

我有一个简单的服务器在我的电脑上运行和一个简单的客户端在我的htc欲望运行Android 2.2。 服务器和客户端都使用相同的端口。我将服务器ip硬编码到客户端代码中。当我尝试通过Android上的客户端连接到正在运行的服务器时,客户端会抛出此异常:
IOException ...: java.net.SocketException: The operation timed out.
以下是客户端和服务器代码的一部分: 客户代码
  InetAddress addr;
  Socket socket = null;

  byte [] ipAddress = new byte[] {(byte)82,(byte)168,(byte)175,(byte)141};

  try{

   addr = InetAddress.getByAddress(ipAddress);

   socket = new Socket(addr, 1234);
   System.out.println("socket = "+socket);

   BufferedReader in = new BufferedReader(
            new InputStreamReader(
             socket.getInputStream()));

   PrintWriter out = new PrintWriter(
            new BufferedWriter(
             new OutputStreamWriter(socket.getOutputStream())),true);

        out.println("hello");
        socket.close();
  } catch (UnknownHostException e) {
   System.out.println("UnknownHostException ...: "+e);
  } catch (IOException e) {
   System.out.println("IOException ...: "+e);
  }
, 服务器代码
    ServerSocket ss = new ServerSocket(PORT);
  System.out.println("Started:"+ss);

  try{
   //block until a connection occures
   Socket socket = ss.accept();

   try{
    System.out.println("Conncetion accepted:"+socket);
    InputStream IS = socket.getInputStream();
    InputStreamReader ISR = new InputStreamReader(IS);
    BufferedReader in = new BufferedReader(ISR);

    OutputStream OS = socket.getOutputStream();
    OutputStreamWriter OSR= new OutputStreamWriter(OS);
    BufferedWriter BW = new BufferedWriter(OSR);
    //output automatically flushed by PrintWriter
    PrintWriter out = new PrintWriter(BW,true);

    while(true){
     String str = in.readLine();
     System.out.println("Client: "+str);
     out.println("hi");
    }
   }finally{
    System.out.println("Closing...");
    socket.close();
   }
  }finally{
   ss.close();
  }
此代码使用wifi但不通过3g。 欢迎任何帮助......并提前感谢您。     
已邀请:
您可能使用路由器/ wifi接入点连接到互联网? 如果您的路由器使用NAT协议,则Internet上的任何设备都无法打开与PC的连接。 NAT只允许PC打开与Internet的连接,反之则不然。 因此,当您的手机在wifi上时,它可以连接到PC,因为它们都在同一网络上并且不使用NAT。当您的手机在3g以及互联网上时,手机和PC之间的NAT就是这样。 解: 在您的路由器上启用端口转发,而不是将您的应用程序连接到路由器的IP,这将转发此连接到您的PC。     

要回复问题请先登录注册