zoukankan      html  css  js  c++  java
  • Android深入浅出系列之Socket—Socket编程(一)

      为什么要讲Socket呢?因为看过我蓝牙协议(一)和蓝牙协议(二)的文章的人知道,我要做的这个应用是把蓝牙笔里面的数据读取到手机里,就要用到基于Bluetooth协议的Socket,所以就也是为什么在这里我要讲一下Socket编程了。

      一:什么是Socket    

        它实际上是网络通信的一种接口,基于不同的协议,有各种不同的Socket,比如有基于TCP协议的Socket和基于UDP协议的Socket以及基于蓝牙协议的Socket,Android中使用的是Java的Socket模型。

        Socket在计算机行业通常称为”套接字“,用于描述IP地址和端口,是一个通信链的句柄。这是一个比较抽象的概念。计算机是拥有端口的,每一个端口都可以有一个应用程序来进行通讯的使用,比如:80端口是HTTP协议所使用的端口,21端口是FTP协议所使用的端口,端口是计算机和外界通讯的接口,这些接口都是逻辑的接口,端口号取值的范围是零到256乘以256减1,1024以下的端口都是操作系统使用的保留端口,以上的端口我们可以自由的来使用,不要和其他应用程序的端口冲突。

        应用程序可以通过“套接字”向网络发送请求或者应答网络的请求,这时候就把Socket分成了两部分,一部分是服务器端的Socket,这个Socket主要用来接收来自网络的请求,它一直监听在某一个端口上。一部分是客户端的Socket,这个Socket主要用来向网络发送数据。

      二:Socket通讯模型

      

        -UDP协议和TCP协议

        UDP协议和TCP协议是互联网使用最广的两种协议都是基于IP的协议。第一个区别是UDP协议是一个不太靠谱的协议,UDP协议把数据都打成数据包,数据包上自带通讯地址,也就是说我要把这个数据包发送到网络上的哪一个地址,通过网络把这个数据包发送出去,至于这个数据包是否发送到目的地,是否服务器端接收到了这个数据包,这个协议并不保证,就像中国的邮政,你是把信寄出去了,但是邮政系统不保证对方能收到你寄送的信。TCP发送数据的时候要求接收方接收到数据之后给一个回应,也就是你是否收到了,TCP可靠一些,当我们发送一些比较重要的数据的时候一般都使用TCP协议。另外一个区别是UDP协议发送的一个数据包它的容量是有限的,而TCP协议则没有这样一个限制。并不是说UDP协议一定就不如TCP协议,在不同的领域有不同是使用,UDP协议好处是速度相对快些。TCP协议相对慢些。

        -Socket通讯流程

        应用程序通过“套接字”也就是Socket可以选择这两种协议当中的一种,你可以选择用UDP发送数据,也可以选择用TCP发送数据,数据发送出去通过“通信信道”也就是IP的基础网络,来到服务器端(接收端),就可以接收到数据了。发送数据的时候用UDP协议,接收的时候也要用UDP协议,发送数据的时候用TCP协议,接收的时候也要用TCP协议,在发送的时候指定接收端的IP地址和端口号就可以了,究竟数据包或数据是如何发送的,框架已经帮我们封装好了,我们不去关心它了。

         

  • 相关阅读:
    Linnia学习记录
    漫漫考研路
    ENS的学习记录
    KnockoutJS 3.X API 第四章 数据绑定(4) 控制流with绑定
    KnockoutJS 3.X API 第四章 数据绑定(3) 控制流if绑定和ifnot绑定
    KnockoutJS 3.X API 第四章 数据绑定(2) 控制流foreach绑定
    KnockoutJS 3.X API 第四章 数据绑定(1) 文本及样式绑定
    KnockoutJS 3.X API 第三章 计算监控属性(5) 参考手册
    KnockoutJS 3.X API 第三章 计算监控属性(4)Pure computed observables
    KnockoutJS 3.X API 第三章 计算监控属性(3) KO如何实现依赖追踪
  • 原文地址:https://www.cnblogs.com/menglin2010/p/2240887.html
Copyright © 2011-2022 走看看