从android设备连接到服务器时连接超时

从android设备连接到服务器时连接超时,android,Android,我正在尝试从我的android手机连接到我的服务器。但我得到了超时连接错误。 原因是什么 我的代码是 public void onClick(View view) { if (view == loginBtn) { if (username.getText().length() != 0 & password.getText().length() != 0) { progressDialog = ProgressDialog.show(t

我正在尝试从我的android手机连接到我的服务器。但我得到了超时连接错误。 原因是什么

我的代码是

public void onClick(View view) {
    if (view == loginBtn) {
        if (username.getText().length() != 0 & password.getText().length() != 0) {

            progressDialog = ProgressDialog.show(this,Farsi.Convert(""),"Verifying user credential"); 

            Thread thread = new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Connection connection = getConnection();
                        User user = connection.login(username.getText().toString(), password.getText().toString()); 
                        if (user != null) {
                            BaseKaizenActivity.getStorageManager().setUser(user);
                            Log.d("---", user.getId() + "  :  " + user.getName());
                            showActivity(MainMenuActivity.class);
                        }
                        else {
                            handleException("Invalid username or password");
                        }
                    }
                    catch (Exception exc) {
                        handleException(exc.getMessage());
                    }
                    finally {
                        if (progressDialog != null) {
                            progressDialog.dismiss();
                        }
                    }
                }
            });
            thread.start();
        }
        else {
            handleException("Insert username and password");
        }
    }
}
我得到的例外是

Connect to /10.0.2.2:8080 timed out
org.apache.http.conn.ConnectTimeoutException: Connect to /10.0.2.2:8080 timed out
at     org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:121)
at     org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(
       DefaultClientConnectionOperator.java:156)
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
at     org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:428)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
at com.pda.kaizen.ConnectionImpl.executeHttpPost(ConnectionImpl.java:133)
at com.pda.kaizen.ConnectionImpl.login(ConnectionImpl.java:88)
at com.pda.kaizen.activity.LoginActivity$1.run(LoginActivity.java:98)
at java.lang.Thread.run(Thread.java:1019)
请尝试以下示例代码:

public class AndroidClient extends Activity {

EditText textOut;
TextView textIn;

 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);

     textOut = (EditText)findViewById(R.id.textout);
     Button buttonSend = (Button)findViewById(R.id.send);
     textIn = (TextView)findViewById(R.id.textin);
     buttonSend.setOnClickListener(buttonSendOnClickListener);
 }

 Button.OnClickListener buttonSendOnClickListener
 = new Button.OnClickListener(){

@Override
public void onClick(View arg0) {
 // TODO Auto-generated method stub
 Socket socket = null;
 DataOutputStream dataOutputStream = null;
 DataInputStream dataInputStream = null;

 try {
  socket = new Socket("192.168.1.101", 8888);
  dataOutputStream = new DataOutputStream(socket.getOutputStream());
  dataInputStream = new DataInputStream(socket.getInputStream());
  dataOutputStream.writeUTF(textOut.getText().toString());
  textIn.setText(dataInputStream.readUTF());
 } catch (UnknownHostException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 } catch (IOException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
 }
 finally{
  if (socket != null){
   try {
    socket.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }

  if (dataOutputStream != null){
   try {
    dataOutputStream.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }

  if (dataInputStream != null){
   try {
    dataInputStream.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  }
 }
}};
}
以及您的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
<TextView
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="@string/hello"
 />
<EditText
 android:id="@+id/textout"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 />
<Button
 android:id="@+id/send"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:text="Send"
 />
<TextView
 android:id="@+id/textin"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 />
</LinearLayout>

首先,在你的舱单中为每个任务添加这个

<uses-permission android:name="android.permission.INTERNET"/>


您的清单文件中是否添加了internet权限?使用模拟器时,我的代码会出错。只有当我使用安卓设备时,才会出现此超时错误。有一个问题,我可以使用我的android设备连接到10.0.2.2吗?或者,我想这不是一个有效的地址。我在上面的代码中提到过使用地址。要获取您的计算机地址,请在使用windows的情况下进入控制台并写入
ipconfig
,您将看到可能的内容,从中可以看到类似以下内容的字符串:“IPv4地址……”:192.168.2.147`使用此IP是您代码中的服务器地址。