---------------------- android培训、java培训 、期待与您交流! ----------------------
我们经常会用到网络应用,比如网络聊天,发送文件等,这就需要用到网络编程。
1.TCP/IP协议
IP地址:定位到网络中的计算机
端口号:定位到计算机中具体的网络应用程序
范围:0-65535,其中0-1023的端口用于一些知名的网络服务和应用,自己编写的程序使用1024-65535之间的端口号
TCP ,传输控制协议(Transmission Control Protocol)面向连接,可靠传输
UDP,用户数据报协议(User Dategram Protocol)无连接,不可靠传输
UDP与TCP数据帧格式:协议类型 源IP 目标IP 源端口 目标端口 帧序号 帧数据
2.Socket
网络驱动层提供给应用程序编程的接口和一种机制。
Socket类似与港口,应用程序将需要发送的数据放在Socket中,然后驱动程序使用网卡将数据发送出去,数据传输到接收方的Socket中,就好像别的程序把货物送到码头,然后接收方应用程序来码头取货物。不同的协议使用的Socket类不一样。
3.UDP网络程序
public DatagramSocket():一般用于发送方,Socket绑定到系统分配的端口,使用网卡对应的IP地址。
public DatagramSocket(int port):一般用于接收方,Socket绑定到指定的端口,发送方才能够给其发送数据
public DatagramSocket(int port, InetAddress laddr):Socket绑定到指定的端口,使用指定的IP地址
关闭Socket,释放资源
如果把Socket比作码头,DatagramPacket就相当于发送和接收数据的集装箱。
public DatagramPacket(byte[] buf,int length):一般用于接收方,不需要指定端口号和IP,byte[] buf提供数据缓冲区,length指定接收数据包得大小
public DatagramPacket(byte[] buf, int length, InetAddress address, int port):一般用于发送方,需要指定目标的端口号和IP
用于接收方获得发送方的IP和端口号
4.私有IP通过网关代理上网的原理
私有IP 内网IP&InternetIP InternetIP1
中间部分相当于网关
私有IP将数据发送到内网IP,然后经由InternetIP的某个端口 发送到InternetIP1,并且维护一个私有IP和InternetIP端口的映射表,InternetIP1想与私有IP通信,只需要将数据发送到私有IP对应的InternetIP端口即可。InternetIP端口会通过查映射表将数据转发到私有IP。
5.TCP网络程序
分为服务器端和客户端
客户端的Socket发送请求,服务器端的ServerSocket接收客户请求,accept方法处理请求创建一个Socket对象与客户端进行通信。
TCP程序必须先启动运行,TCP客户程序才能连接上TCP服务器
关闭对象,释放资源
public Socket accept() 等待连接,连接传入之前一直阻塞
6.URL
URL(UniformResourceLocator)统一资源定位符,用于访问Internet上的资源的。
URL基本组成:协议 主机名,端口号,资源名
一个完整的请求消息包括:一个请求行、若干消息头,以及实体内容
一个完整的响应消息包括:一个状态行,若干消息头,以及实体内容。
URL类根据提供的协议,需要产生相应的URLStreamHandler类来对这种协议进行处理,按照一般的思路我们可以将protocol作为参数传递进去,URL类就可以根据参数产生响应的URLStreamHandler,但是有一个问题,协议有很多种,并且不断有新的协议产生,在设计URL类的时候不可能考虑到所有的协议,所以可以把URLStreamHandler的任务专门交由一个类来处理,这个类的任务就是根据提供的协议,产生对应的URLStreamHandler,就相当于一个专门生产URLStreamHandler类的工厂一样,这样如果有新的协议出现,只需要修改工厂类,在工厂类中增加生产与这种协议对应的URLStreamHandler即可,这种工厂设计模式大大增加了程序设计的灵活性。
public static void setURLStreamHandlerFactory(URLStreamHandlerFactory fac):设置URL类使用的URLStreamHandlerFactory ,只能被调用一次。
URLStreamHandler createURLStreamHandler(String protocol) :根据提供的协议产生相应的URLStreamHandler
URL有一个常用的的protocol和URLStreamHandler对应的表,就算URL类没有设置URLStreamHandlerFactory,URL也可以产生常用的URLStreamHandler。
URLConnection的作用是与目标资源建立连接
getInputStream得到响应消息的流对象
getOutputStream得到请求消息的流对象
在http协议下的URLConnection,URL与目标资源建立的底层网络连接只有一个,但是可以被多个HttpURLConnection对象共享。
一个HttpURLConnection实例对象只可以向服务器发送一次请求,并且得到服务器的一次响应。调用getInputStream和getInputStream的close方法,关闭的是流对象和所占用的系统资源,并不会关闭底层的网络连接。
关闭底层的网络连接。
---------------------- android培训、java培训 、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima