Android网络功能开发(5)——Socket编程接口

Socket是编写用TCP/IP协议进行通信的程序的API接口,TCP/IP协议是互联网上使用的通信协议,不局限于HTTP的一问一答方式,可以随发随收。

JavaSE平台提供了Socket编程接口,Android上也能使用。

TCP/IP通信中包括两方:每一方都有IP地址和端口号。

IP地址用于区分设备,比如计算机网卡、手机通信模块等,每个通信设备有一个IP地址。现在互联网上IP地址格式正由IPv4向IPv6过渡,一个IPv4地址用4个字节表示,一个IPv6地址用16个字节表示,所以IPv6的地址数远远多于IPv4,解决了地址不够用的问题。端口号是一个整数,区分同一设备上的不同程序。比如,一台计算机可以使用文件传输服务的同时访问网页,也就是同时和多台计算机通信,那么不同的通信程序就用不同的端口号区分。

Socket支持TCP和UDP两种通信方式。

TCP是一种有连结的数据传输协议,传输数据前要先建立可靠的连结。类似于打电话,要先拨通后才能通话。TCP的数据传输是可靠的,如果传输不到接收方,发送方能够检测到。数据传输也是有序的,先发送的数据肯定先到达接收方。因为要建立连结并且保证数据传输的有效性和可靠性,所以耗费资源比较多。

UDP是一种无连结的数据传输协议,不需要建立连结就能传输数据。类似于发邮件或短信,不用管对方是什么状态,直接发就行。UDP的数据传输是不可靠的,数据包一旦发出,就和发送方没有关系了,能否到达接收方不可知。数据传输顺序也是不一定的,先发送的数据包可能后到达接收方。因为不需要建立连接,也不需要保证数据传输的有效性和可靠性,所以耗费资源比较少。

两种通信方式各有特点,所以分别适合不同用途。TCP方式用于对数据可靠性要求较高的情况,如浏览器使用的HTTP协议、文件下载使用的FTP协议等。UDP用于对速度和节省资源要求较高的情况,如多人游戏、QQ等。

在具体的处理上:TCP协议可以在一台计算机的一个端口上可以建立多个连结,而且需要为每个连结建立一个接收数据的线程。UDP协议没有连结的概念,一台计算机的一个端口上只需建立一个接收数据的线程就可接收所有数据。

猜你喜欢

转载自blog.csdn.net/nanoage/article/details/127967028
今日推荐