Android之LocalSocket和LocalServerSocket的使用

本文介绍了在分析Android视频直播源码时遇到的LocalSocket和LocalServerSocket,详细解析了它们在Android应用中用于同一应用内不同线程或Activity间数据传输的功能。通过代码示例展示其具体用法及运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在分析Android视频直播的源码时,碰到了LocalSocket和LocalServerSocket,于是在这里做个小结


在Android Developer中,关于LocalSocket和LocalServerSocket的解释比较少,个人总结一下,

在所看的代码中,其所起的作用吧!LocalSocket并不于Socket相同,LocalSocket个人总结的

作用是:可以实现在同一个应用的多个线程之间或者多个Activity之间进行数据的传递


代码示例如下:

package com.example.administrator.testjava;

import android.net.LocalServerSocket;
import android.net.LocalSocket;
import android.net.LocalSocketAddress;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class TestLocalSocketActivity extends AppCompatActivity {

    final static String SOCKET_ADDRESS = "LocalSocketAddress";
    LocalSocket localSocketSender,localSocketReceiver;
    LocalServerSocket localServerSocket;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_local_socket);
        try {
            localServerSocket = new LocalServerSocket(SOCKET_ADDRESS);
            localSocketSender = new LocalSocket();
            localSocketSender.connect(new LocalSocketAddress(SOCKET_ADDRESS));
            localSocketReceiver = localServerSocket.accept();
            send();
            receiver();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void send(){
        new Thread(){
            @Override
            public void run() {
                try {
                    OutputStream outputStream = localSocketSender.getOutputStream();
                    outputStream.write(20);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    public void receiver(){
        new Thread(){
            @Override
            public void run() {
                try {
                    InputStream inputStream = localSocketReceiver.getInputStream();
                    int ret = inputStream.read();
                    Log.e("ret","" + ret);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }
}


运行结果如下:




评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值