Android:“套接字未连接”例外

时间:2010-11-17 06:16:43

标签: android

我在通过wifi通过TCP将数据从Android客户端发送到桌面服务器时遇到了一些问题。模拟器工作正常,但在实际的手机上,无法建立连接。抛出了“socket not connected”异常。

我已在下面附上我的代码。有什么帮助吗?非常感谢!

//活动中的代码

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();
   }
}

3 个答案:

答案 0 :(得分:1)

您的serverAddr不应该是字符串,而应该是InetAddr。 使用InetAddr.getByName(“18.x.x.x”)

答案 1 :(得分:0)

您可以使用以下方法在java中进行异常处理: - http://source.android.com/source/code-style.html#java-language-rules.Hope您可以找到解决方案。

答案 2 :(得分:0)

服务器地址应该是网络中的服务器本地地址。 您还需要配置路由器“PORT FORWORDING”以从端口4444发送所有数据包并将其转发到您的服务器本地IP。电话和服务器电脑也应该连接到同一个WiFi网络。