济南阿里云代理商:android 内网通信

Android内网通信主要有两种方式:

  1. 使用VPN
    使用VPN是一种比较常见的解决方案。通过搭建VPN服务器,实现互联网和内网之间的隧道通信。VPN可以在不同的设备上进行安装,然后通过VPN连接在互联网和内网之间进行通信。
  2. 使用端口映射
    端口映射是另一种解决方法,它可以实现将内网中的一个端口映射到互联网上。在Android设备中,我们可以使用PortMap这个应用来实现端口映射。具体实现步骤如下:

1) 在内网中的另一个设备或路由器中安装PortMap服务端。
2) 配置需要映射的端口和设备。
3) 在Android设备上安装PortMap客户端,并且指定服务端IP和端口。
4) 客户端连接成功后,即可访问内网中的设备。

Android 内网通信通常使用 Socket 编程。以下是示例代码:

服务端代码:

济南阿里云代理商:android 内网通信
public class ServerActivity extends Activity {
    private TextView status;
    private ServerSocket serverSocket;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        status = (TextView) findViewById(R.id.status);

        new Thread(new ServerThread()).start();
    }

    @Override
    protected void onStop() {
        super.onStop();

        if (serverSocket != null) {
            try {
                serverSocket.close();
            } catch (IOException e) {
                // Do nothing
            }
        }
    }

    class ServerThread implements Runnable {
        public void run() {
            try {
                serverSocket = new ServerSocket(8888);

                while (true) {
                    Socket client = serverSocket.accept();
                    status.post(new Runnable() {
                        @Override
                        public void run() {
                            status.setText("Client connected!");
                        }
                    });

                    BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                    String line;

                    while ((line = in.readLine()) != null) {
                        final String msg = line;
                        status.post(new Runnable() {
                            @Override
                            public void run() {
                                status.setText(msg);
                            }
                        });
                    }

                    in.close();
                    client.close();
                }
            } catch (IOException e) {
                final String error = e.getMessage();
                status.post(new Runnable() {
                    @Override
                    public void run() {
                        status.setText(error);
                    }
                });
            }
        }
    }
}

客户端代码:

public class ClientActivity extends Activity implements OnClickListener {
    private EditText address;
    private EditText message;
    private TextView status;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        address = (EditText) findViewById(R.id.address);
        message = (EditText) findViewById(R.id.message);
        status = (TextView) findViewById(R.id.status);

        Button send = (Button) findViewById(R.id.send);
        send.setOnClickListener(this);
    }

    public void onClick(View v) {
        new Thread(new ClientThread(address.getText().toString(), message.getText().toString())).start();
    }

    class ClientThread implements Runnable {
        private String address;
        private String message;

        public ClientThread(String address, String message) {
            this.address = address;
            this.message = message;
        }

        public void run() {
            try {
                Socket socket = new Socket(address, 8888);

                PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                out.println(message);

                BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                final String response = in.readLine();

                status.post(new Runnable() {
                    @Override
                    public void run() {
                        status.setText(response);
                    }
                });

                out.close();
                in.close();
                socket.close();
            } catch (UnknownHostException e) {
                final String error = e.getMessage();
                status.post(new Runnable() {
                    @Override
                    public void run() {
                        status.setText(error);
                    }
                });
            } catch (IOException e) {
                final String error = e.getMessage();
                status.post(new Runnable() {
                    @Override
                    public void run() {
                        status.setText(error);
                    }
                });
            }
        }
    }
}

以上代码使用 Socket 实现了客户端和服务端之间的通信。客户端向服务端发送消息,服务端接收并返回消息。在实际应用中,还需要进行异常处理和优化。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/157870.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月7日 11:58
下一篇 2024年3月7日 12:26

相关推荐

  • 阿里云服务器学生测试题目

    谁有阿里云的笔试题目? 1. 有一个文件:c:/c.txt,写java程序把该文件内容复制两遍,追加到c:/c.txt;2. 写正则表达式 1.邮箱 2.数字3. HashMap 改变map类对用户会不会有影响?4. 生成递增整型数字的方法,当机子重启后仍递增5. 存在40亿个不重复的整数(0~4294967295),可用内存只有256M,怎么找到剩余的并写…

    2023年8月28日
    5600
  • 周口阿里云代理商:阿里ntp服务器

    周口阿里云代理商是指位于河南省周口市的阿里云代理商。阿里云代理商是阿里云的合作伙伴,可以代理阿里云产品的销售和推广。阿里云是阿里巴巴集团旗下的云计算服务提供商,提供云服务器、云数据库、云存储等多种云服务产品。 阿里ntp服务器是阿里云提供的网络时间协议(Network Time Protocol)服务器,用于同步计算机和其他设备的时间。NTP是用于在互联网上…

    2023年12月26日
    5700
  • 阿里的云计算盈利吗

    中国云计算公司收入排名:阿里云怎么这么赚钱 这个行业赚钱的地方太多了,有风险了,要买安全。带宽不够了,要买带宽。。 阿里云计算有限公司怎么样,技术如何?像工程师的话一般工资待遇怎么样? 那要看你的资历了 一般也在8k了做一份工作赚不赚钱,除了你本身的工作能力以外,还要看你的付出与回报是否相等。如果你能力再强,做事再多,成绩再好,得到的回报太低,那么你是无法在…

    2023年8月28日
    6100
  • 阿里云免费云服务器申请

    若您需要申请阿里云免费云服务器,您可以按照以下步骤操作: 访问阿里云官网:https://www.aliyun.com 点击页面上方的”产品”,选择”云服务器 ECS”。 在ECS产品页面,您可以选择合适的云服务器套餐,阿里云提供有部分免费套餐可以选择。 点击”免费试用”,进行账号登录或…

    2023年9月7日
    5400
  • 阿里云国际站代理商:android api等级25

    阿里云国际站代理商可以通过API与阿里云服务进行交互,以实现自动化管理和操作。对于android API等级25(即Android 7.1 Nougat),您可能会使用以下一些阿里云服务和API: ECS(Elastic Compute Service):用于创建和管理虚拟服务器。 RDS(Relational Database Service):用于管理关…

    2024年7月11日
    3200

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/