2010-11-17 77 views
1

我在与通过WiFi在TCP来自Android客户端将数据发送到桌面服务器的一些问题。模拟器工作正常,但在实际的电话上,无法建立连接。引发了“套接字未连接”异常。安卓:“套接字未连接”异常

我在下面附上我的代码。请帮忙吗?非常感谢!

// CODE的活动中

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case R.id.send: 
      sendMessage(); 
      return true; 
    /// ...other items 
    } 
} 

private void sendMessage() { 
    String serverAddr = "18.xxx.xx.xxx"; 
    Socket socket = null; 
    try { 
      socket = new Socket(serverAddr, 4444); // EXCEPTION HAPPENS HERE 
    } catch (Exception e) { 
      //show exception on screen 
    } 

    String message = "some message"; 
    try { 
      PrintWriter out = new PrintWriter(socket.getOutputStream(), true); 
      out.println(message); 
    } catch (Exception e) { 
      //show exception on screen 
    } finally { 
      socket.close(); 
    } 
} 
+1

的问题是,你不知道你have..rewrite使用的SocketFactory的代码是什么类型的故障为的SocketFactory给人一种类型的故障,让你知道你有哪些失败,而不复测,看看你有什么类型的故障..它可能是连接超时,或等。 – 2010-11-17 08:58:16

+0

@Fred:谢谢弗雷德。根据您的建议解决问题。 – Crastinator 2011-01-27 04:23:08

回答

1

你serverAddr不应该是一个字符串,但为的InetAddr。 使用InetAddr.getByName(“18.x.x.x”)

0

服务器地址应在网络中的服务器的本地地址。 还需要配置路由器“PORT FORWORDING”从4444端口发送的所有数据包,并将其转发到你的服务器的本地IP。此外,手机和服务器电脑都应连接到同一个WiFi网络。