【发布时间】:2017-08-16 16:59:34
【问题描述】:
嗨,我是 android 新手,我是 试图让我的 android 应用程序连接到在我的本地计算机上运行的服务器。我只是想让应用程序先向服务器发送一条简单的字符串消息,但不断收到错误消息。从打印出来的语句中,我可以看到应用程序在遇到 try 的行后立即终止,所以我认为创建客户端连接存在问题。我还启用了 Internet、ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE、READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE 权限
我尝试将 localhost 更改为 InetAddress.getLocalHost() 但仍然无法正常工作
这是我的代码:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.util.StringBuilderPrinter;
import android.view.View;
import android.widget.Button;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import static java.net.InetAddress.getLocalHost;
public class MainActivity extends AppCompatActivity{
private Button cam;
private Socket client;
DataOutputStream os;
private String IP = "localhost";
private static final String TAG = "testing";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT > 9)
{
StrictMode.ThreadPolicy policy = new
StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
setContentView(R.layout.activity_main);
cam = (Button) findViewById(R.id.Button_camera);
cam.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.v(TAG, "trying to connect to server");
try {
client = new Socket("My IP address entered", 8080);
Log.v(TAG, "client socket initalised");
String hey = "hey";
os = new DataOutputStream(client.getOutputStream());
Log.v(TAG, "outptu stream created");
os.flush();
Log.v(TAG, "flush");
os.writeBytes(hey);
Log.v(TAG, "written to server");
os.close();
} catch (UnknownHostException e) {
Log.v(TAG, "Unknown error");
Log.v(TAG, e.toString());
} catch (IOException e) {
Log.v(TAG, "IO exception u numpty");
Log.v(TAG, e.toString());
}
Intent intent = new Intent(MainActivity.this, Main2Activity.class);
startActivity(intent);
}
});
}
}
我的代码打印出试图连接到服务器的语句,但没有到达任何其他打印出的语句,我的服务器仍然没有收到任何东西
connect failed: ETIMEDOUT (Connection timed out)
ACTION_DOWN before UnsetPressedState. invoking mUnsetPressedState.run()
I/Choreographer: Skipped 3792 frames! The application may be doing too much work on its main thread.
【问题讨论】:
-
10.0.0.2 被视为您的掩码名称,而不是您在网络中的 pc 地址
-
我已将代码更改为使用我的 IP 地址运行,但仍然无法正常工作
-
它说我输入的 ip 地址是我输入我的 ip 地址的地方,我通过谷歌搜索我的 ip 得到了我的 ip,会不会是 ipv4 或 ipv6 问题??
-
你google看到的ip是你的internet modem地址,在终端输入“ipconfig”就可以看到你的网络地址
-
我已经做到了,并尝试了 ip 仍然没有运气
标签: java android sockets client-server dataoutputstream