Socket也成套接字,分为流式套接字和用户数据报套接字两种,分别对应于网络传输控制层中的TCP和UDP协议。
TCP:
TCP协议是面向连接的协议,提供稳定的双向通信功能,TCP连接的建立需要经过“三次握手”才能完成,为了提供稳定的数据传输功能,其本身提供了超时重传机制,因此具有很高的稳定性。
UDP:
UDP是无法连接的,提供不稳定的单向通信功能,当然UDP也可以实现双向通信功能。在性能上,UDP具有更好的效率,其缺点是不保证数据一定能够正确传输,尤其是在网络拥塞的情况下。
使用Socket通信,有两点需要注意,首先需要声明权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
其次要注意不能在主线程中访问网络,因为这会导致程序无法再4.0以及上设备上运行会抛出android.os.NetworkOnMainThreadException。