安卓开发,手机和电脑不在同一局域网内,如何通信?

安卓开发,手机和电脑不在同一局域网内,如何通信?

我使用okhttp实现数据传输,手机和电脑后台在同一局域网时可以通信,但是不在同一局域网时就显示“failed to connect to 电脑ip(port 82) from 手机ip (port 60998) after 10000ms”。

后台是Flask,加了flask_cors跨域,还是无法连接

如果手机使用流量,电脑使用wifi的情况下,如何使手机app连接到电脑后台呢?

安卓app连接部分代码

void postRequest(String postUrl, RequestBody postBody) {

        OkHttpClient client = new OkHttpClient();

        Request request = new Request.Builder()
                .url(postUrl)
                .post(postBody)
                .build();

        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                // Cancel the post on failure.
                call.cancel();
                Log.d("FAIL", e.getMessage());

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        TextView responseText = findViewById(R.id.responseText);
                        responseText.setText("Failed to Connect to Server. Please Try Again.");
                    }
                });
            }

电脑端代码

import flask
from flask_cors import CORS
import werkzeug
import time

app = flask.Flask(__name__)

@app.route('/', methods = ['GET', 'POST'])
def handle_request():
    return "Image(s) Uploaded Successfully. Come Back Soon."

if __name__=='__main__':
    app.run(host="0.0.0.0", port=82)
    CORS(app)

不在同一局域网,那就得在公网上啊,否则不可能凭空连啊。
自己电脑一般没有公网ip,要用内网穿透。花生壳啥的。

参考GPT和自己的思路:

由于手机和电脑不在同一局域网内,你需要进行端口映射(Port Forwarding)来实现从互联网上的任意位置访问电脑上的应用程序。这样可以将电脑公网 IP 地址的某个端口映射到内部局域网上的电脑的某个端口。一般来说,路由器的设置页面里都有相关的选项,你可以在设置页面里查找"端口映射"、"虚拟服务器"等选项进行配置。

具体操作方法如下:

  1. 打开路由器管理页面,进入端口映射/虚拟服务器选项。

  2. 新增端口映射规则,选择协议类型,填写内网IP地址和端口号,然后填写转发后的外网端口号。

  3. 在手机端使用电脑的公网IP地址及相应的端口号进行HTTP请求即可。

注意事项:

  1. 由于涉及到网络安全问题,建议在端口映射后,及时关闭对应的端口映射功能。

  2. 使用自有服务器完成对于互联网上的应用程序访问,需要注意网络安全,保障服务器的网络安全性。

总之,进行端口映射后即可在不同局域网中进行通信,可以正常使用okhttp实现数据传输,同时需要在Flask服务端使用flask_cors跨域处理。

可以vpn 连代理就行了吧

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^