前言:
在分析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(); } }
运行结果如下: