【问题标题】:Android client app not connecting to a server on pcAndroid客户端应用程序未连接到PC上的服务器
【发布时间】:2016-03-25 18:18:47
【问题描述】:

我有以下问题...我正在编写一个系统,该系统由我的电脑上的服务器端和可爱的 Xperia(又名 Android 手机)上的客户端组成。问题是当我尝试通过客户端应用程序将手机绑定到电脑时,logcat 说:

  failed to connect to /*xxx.xxx.x.xxx (port 2002): connect failed: ETIMEDOUT (Connection timed out)

*这里是我的IP地址,它以192开头...

实际上,我在客户端使用了 try - catch,在 try 中我设置了套接字,但问题是进程失败,我猜,当它进入 catch 块时,无法正确创建套接字......我我在我家的 Wi-Fi 热点上运行这两个设备。正如我所说,我使用套接字,这可能意味着我的连接类型是 TCP (? :))。请为此提出某种解决方案,因为我在论坛(以及此处)中继续阅读的次数越多,我就越感到困惑。

我的代码片段:

  public class ClientSide extends AsyncTask<String, Void, String>{

protected String doInBackground(String... params){

    final String SERVER_HOSTNAME = "xxx.xxx.x.xxx";
    final int SERVER_PORT = 2002;
    BufferedReader mSocketReader;
    PrintWriter mSocketWriter;
    final String TAG = ClientSide.class.getSimpleName();
    String data="";
    String outputln = "Me. Android";

    try {
        Socket socket = new Socket(SERVER_HOSTNAME, SERVER_PORT);
        mSocketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        mSocketWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
        System.out.println("Connected to server " + SERVER_HOSTNAME + ":" + SERVER_PORT);

        //Reads from the socket
        data = mSocketReader.readLine();

        //Writes to the socket, a.k.a. sends info
        mSocketWriter.println(outputln);
        mSocketWriter.flush();

    } catch (IOException ioe) {
        System.err.println("Cannot connect to " + SERVER_HOSTNAME + ":" + SERVER_PORT);
        ioe.printStackTrace();

    }

    return data;
}

提前感谢您,如果您需要更多信息,我会尽力提供。我是 Android 开发的极端初学者,对不起我的英语。

*更新:服务器端应用程序是用 java 编写的,也构建了 6-7 个类,我不通过 Apache 或其中任何一个运行所有这些。我不想只测试我的应用,我想通过 wi-fi 建立真正的连接,而不是通过 USB。

【问题讨论】:

  • 您的 Android 设备是否也有蜂窝网络连接?如果是这样,它可能正在尝试通过该网络连接到您的 PC。
  • here goes my ip address。你有一个?我想你的安卓设备会有一个。还有你的电脑。所以你在说哪里?您不必隐藏这样的 IP 地址,因为它的本地和数以百万计的 IP 地址相同。
  • it starts with 168...。它以192.168..? 开头?
  • 如果是192开头,请准确显示使用的ip地址。
  • @greenapps Socket 类需要获取两个参数的 afaik - 首先是客户端连接的服务器的 ip,其次是端口。因此,简而言之,这不是电话的 IP,而是服务器所在的计算机的 IP。蜂窝连接也无济于事。

标签: java android sockets android-studio client-server


【解决方案1】:

试试这个:打开控制面板 -> Windows Defender 防火墙 -> 允许应用程序或功能通过 Windows Defender 防火墙(左侧) -> 检查 Apache HTTP 服务器和 mysqld 是否用于私有和公共网络 ???

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2013-12-26
    • 2012-12-05
    • 2018-01-06
    • 1970-01-01
    相关资源
    最近更新 更多