从android设备连接到服务器时连接超时
我正在尝试从我的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
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是您代码中的服务器地址。