Android中Socket编程(二)

2017-06-01  本文已影响0人  Goorwl

Android中Socket编程

LocalServerSocket介绍

LocalServerSocket是属于Android系统内置的一个类,属于net包下,类似java中的serversocket类的功能。

Non-standard class for creating an inbound UNIX-domain socket in the Linux abstract namespace.

这个类比较简单,构造方法有两个:

LocalServerSocket(String name)

Creates a new server socket listening at specified name.

LocalServerSocket(FileDescriptor fd)

Create a LocalServerSocket from a file descriptor that's already been created and bound.

一般使用第一个即可;

本类中方法只有四个,分别是:

查看LocalServerSocket源码可知:

总结

本类内容比较简单,主要实现方式都在LocalSocketImpl中,下次分析。

LocalSocket介绍

This class and the streams returned from it may be used from multiple threads.

内容基本同LocalScoket,主要功能也是通过LocalSocketImpl实现的。

代码

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

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    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(60);     // 客户端发送数据
            } 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);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }.start();
}

未完待续。。。

上一篇 下一篇

猜你喜欢

热点阅读