我遇到以下问题...我正在编写一个系统,该系统由我的电脑上的服务器端和我可爱的 Xperia(又名 Android 手机)上的客户端组成。问题是,当我尝试通过客户端应用程序将手机绑定(bind)到电脑时,logcat 显示:
failed to connect to /*xxx.xxx.x.xxx (port 2002): connect failed: ETIMEDOUT (Connection timed out)
*这是我的 IP 地址,以 192 开头...
实际上,我在客户端使用了 try - catch,在 try 中我设置了套接字,但问题是该进程失败了,我猜,在 catch block 中正确创建套接字时......我我正在我的家庭 Wi-Fi 热点上运行这两个设备。正如我所说,我使用套接字,这可能意味着我的连接类型是 TCP (?:))。请为此提出某种解决方案,因为我在论坛上继续阅读的内容越多(也在这里),我就越感到困惑。
我的代码 fragment :
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。
最佳答案
试试这个:打开控制面板 -> Windows Defender 防火墙 -> 允许应用程序或功能通过 Windows Defender 防火墙(左侧) -> 检查 Apache HTTP 服务器和 mysqld 的私有(private)和公共(public)网络 👍👍👍
关于java - Android 客户端应用程序无法连接到 PC 上的服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36225592/