标签:
TCP传输控制协议,是一种面向连接的,可靠的,基于字节流的传输层通信协议。
UDP用户数据报协议,是TCP/IP模型中一种面向无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
Socket通称套接字,中文意思为插座。一台服务器可能会提供很多服务,每种服务对应一个Socket(也可说成,每个Socket就是一个插座,客户若是需要哪种服务,就将插头插到相应的插座上面)。而客户的插头也是一个Socket。它是应用层与TCP/IP协议通信的中间软件抽象层,是一组接口。
Socket基本操作包括:
连接远程服务器,发送数据,接收数据,关闭连接,绑定端口,监听到达数据,在绑定的端口接受来自远程机器的连接。
---------------------------------------------------------------------------
服务器要和客户端通信,两者都要实例化一个Socket。但是服务器和客户端的Socket是不一样的,客户端可以实现连接远程服务器,发送数据,接收数据,关闭连接等。服务器还需要实现绑定端口,监听到达数据,在绑定的端口接受来自远程机器的连接。
Android在java.net里面提供了两个类:ServerSocket和Socket,前者用于实例化服务器的Socket,后者用于实例化客户端的Socket. 在连接成功后,应用程序两端都会产生一个Socket实例,操作这个实例,完成客户端到服务器所需的会话。
--------------------------------------------
Socket client=new Socket("192.168.1.23",2012);//第一个参数是目标服务器的IP地址,2012是目标服务器的端口号
注意:0~1023为系统保留,用户设定的端口号应该大于1023
-------------------------------------------
Socket类重要方法:
public InputStream getInputStream() 读出该Socket中的数据流
public OutputStream getOutputStream() 向该Socket中写入数据
public synchronized void close() 关闭Socket
---------------------------------------------------------------
ServerSocket socketserver=new ServerSocket(2012);//2012表示服务器要监听的口号
构造完ServerSocket之后,需要调用ServerSocket.accept()方法来等待客户端的请求(因为Socket都是绑定在端口上面的,所以知道是哪个客户端请求的)。 accept()方法就会返回请求这个服务项目的客户端的Socket实例,然后通过返回的这个Socket实例的方法,操作传输过来的信息。当Socket对象操作完毕之后,使用close()方法将其关闭。
ServerSocket类重要方法:
public Socket accept() 等待Socket请求,直接连接被打开,该方法返回一个刚刚打开的连接Socket对象。
public void close() 关闭该服务器Socket
-------------------------------------------
Socket一般有两种类型:TCP套接字和UDP套接字
--------------------------------------------------------------
使用TCP通信
TCP建立连接之后,通信双方都同时可以进行数据的传输;在保证可靠性上,采用超时重传和捎带确认机制;在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传;在拥塞机制上,采用慢启动算法。
TCP服务器端工作的主要步骤如下。
步骤1 调用ServerSocket(int port)创建一个ServerSocket,并绑定到指定端口上。
步骤2 调用accept(),监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字。
步骤3 调用Socket类的getOutputStream()和getInputStream()获取输出和输入流,开始网络数据的发送和接收。
步骤4 关闭通信套接字。
TCP客户端工作的主要步骤如下。
步骤1 调用Socket()创建一个流套接字,并连接到服务器端。
步骤2 调用Socket类的getOutputStream()和getInputStream()方法获取输出和输入流,开始网络数据的发送和接收。
步骤3 关闭通信套接字。
------------------------------------------------------------------
使用UDP通信
UDP有不提供数据报分组、组装和不能对数据包排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用,包括网络视频会议系统在内的众多的客户端/服务器模式的网络应用都需要使用UDP协议。UDP协议的主要作用是将网络数据流量压缩成数据报的形式。一个典型的数据报就是一个二进制数据的传输单位。UDP传输原理示意图如图2-6所示。
UDP服务器端工作的主要步骤如下。
步骤1 调用DatagramSocket(int port)创建一个数据报套接字,并绑定到指定端口上。
步骤2 调用DatagramPacket(byte[]buf,int length),建立一个字节数组以接收UDP包。
步骤3 调用DatagramSocket类的receive(),接受UDP包。
步骤4 关闭数据报套接字。
UDP客户端工作的主要步骤如下。
步骤1 调用DatagramSocket()创建一个数据包套接字。
步骤2 调用DatagramPacket(byte[]buf,int offset,int length,InetAddress address,int port),建立要发送的UDP包。
步骤3 调用DatagramSocket类的send()发送UDP包。
步骤4 关闭数据报套接字。
网络应用(二)----安卓如何使用TCP和UDP进行通信,Socket编程
标签:
原文地址:http://www.cnblogs.com/dawn-rainy/p/4699219.html