android中的socket

什么是Socket?     java

     所谓Socket一般也称做“套接字”,用于描述IP地址和端口,是一个通讯连的句柄,应用程序一般经过“套接字”向网络发送请求或者应答网络请求,它就是网络通讯过程当中端点的抽象表示。它主要包括如下两个协议:编程

      TCP (Transmission Control Protocol 传输控制协议):传输控制协议,提供的是面向链接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间创建一个TCP链接,以后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另外一端。
      UDP (User Datagram Protocl 用户数据报协议):用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,可是并不能保证它们能到达目的地。因为UDP在传输数据报前不用在客户和服务器之间创建一个链接,且没有超时重发等机制,故而传输速度很快。
服务器

详细解说以下:网络

      TCP传输和UDP不同,TCP传输是流式的,必须先创建链接,而后数据流沿已链接的线路(虚电路)传输。所以TCP的数据流不会像UDP数据报同样,每一个数据报都要包含目标地址和端口,由于每一个数据报要单独路由。TCP传输则只须要在创建链接时指定目标地址和端口就能够了。socket

  形象的讲,TCP就像打电话,UDP就像发电报。宏观上来看UDP是不分客户端和服务端的。通讯双方是平等的。微观上来说只相对一个报文,发送端是客户端,监听端是服务端。发送端把数据报发给路由器就像把电报发给了邮局,后面的事情就是发送者没法控制,也无从知晓的了。因此说是不可靠的,可能会出现报文丢失而无从知晓。就像每张电报都要有收件人同样,每一个数据报都要有目的地址和端口。测试

  而TCP每次链接都是分客户端和服务端的。链接的发起者(至关与拨号打电话的人)是客户端,监听者(至关于在电话边等着接电话的人)是服务端。发起者指定要链接的服务器地址和端口(至关于拨号),监听者经过和发起者三次握手创建链接(至关于听到电话响去接电话)。创建链接后双方能够互相发送和接受数据(打电话)。spa

Java如何操做Socket?操作系统

       值得一提的是,Java分别为TCP和UDP提供了相应的类,TCP是java.net中提供了两个类Socket和ServerSocket,分别用来表示双向链接的客户端和服务端。这是两个封装得很是好的类,使用起来很方便!UDP是java.net.DatagramSocket..net

       127.0.0.1是回路地址,用于测试,至关于localhost本机地址,没有网卡,不设DNS均可以访问,端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口.blog

Socket通讯模型以下:

若是你们对Java Socket编程还有模糊的地方抓紧温习(http://blog.csdn.net/shimiso/article/details/8529941),本文不在此赘述,下面咱们以最经常使用的TCP协议举例:

服务器,使用ServerSocket监听指定的端口,端口能够随意指定(因为1024如下的端口一般属于保留端口,在一些操做系统中不能够随意使用,因此建议使用大于1024的端口),等待客户链接请求,客户链接后,会话产生;在完成会话后,关闭链接。
客户端,使用Java socket通讯对网络上某一个服务器的某一个端口发出链接请求,一旦链接成功,打开会话;会话完成后,关闭Socket。客户端不须要指定打开的端口,一般临时的、动态的分配一个1024以上的端口。

TCP网络链接模型:

相关文章
相关标签/搜索