3月30日星期四

一、java学习

一、网络编程基础

1、TCP/IP协议(由网络接入层、网际互联层、传输层、应用层4个层次组成

(1、) 网络接入层:对应于OSI参考模型中的物理层和数据链路层。它负责监视数据在主机和网络之间的交换。

(2、)网际互联层:对应于OSI参考模型的网络层,主要解决主机到主机的通信问题。

(3、)传输层:为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议——传输控制协议(TCP)和用户数据报协议(UDP)。

(4、)传输层:为应用层实体提供端到端的通信功能,保证了数据包的顺序传送及数据的完整性。该层定义了两个主要的协议——传输控制协议(TCP)和用户数据报协议(UDP)。

2、IP地址和端口号

(1、)IP地址可以唯一标识互联网上的一台计算机

[1、] IPv4地址是一个32位的二进制数

[2、] IPv4地址通常用“点分十进制”表示成a.b.c.d的形式

[3、] 新一代的IPv6采用了128位的地址,通常以十六进制形式表示,如2001:A012:B1234:1。

(2、)如果想访问目标计算机中的某个应用程序,还需要指定端口号。

[1、] 端口号用两个字节表示,它的取值范围是0~65 535

3InetAddress类

(1、)该类创建的对象包含一个Internet主机地址的域名和IP地址,并提供了一系列与IP地址相关的方法

3月30日星期四_第1张图片

4、TCP与UDP协议

(1、)TCP面向连接

[1、] 即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

[2、] 在TCP连接中必须要明确客户端与服务器端,由客户端向服务器端发出连接请求,每次连接的创建都需要经过“三次握手”

二、Socket编程

1Socket称作套接字,用于描述IP地址和端口,可以用来实现不同虚拟机或不同计算机之间的通信。

2、根据连接启动的方式以及本地套接字要连接的目标,套接字之间的连接过程可以分为3个步骤。

(1、)服务器监听

服务器端应用程序启动后,服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。

(2、)客户端请求

客户端请求是指由客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后向服务器端套接字提出连接请求。

(3、)连接确认

3、套接字有两种类型:流套接字和数据报套接字。

(1、)流套接字提供双向的、有序的、无重复并且无记录边界的数据流服务,TCP是一种流套接字协议。

(2、)数据报套接字也支持双向的数据流,但并不保证是可靠、有序、无重复的,它保留记录边界,UDP是一种数据报套接字协议。

4、Socket和ServerSocket类

(1、)Socket类

3月30日星期四_第2张图片

3月30日星期四_第3张图片

(2、)ServerSocket类

3月30日星期四_第4张图片

5、常用方法

3月30日星期四_第5张图片

三、数据报编程

1java.net包提供了Datagram-Packet类和DatagramSocket类,这两个类可实现基于UDP的网络程序设计

2、使用Datagram-Socket类表示无连接的socket,用来接收和发送数据报。

3、接收和要发送的数据报内容保存在DatagramPacket对象中。

4、DatagramPacket

(1、)用于处理报文,将byte数组、目标地址、目标端口等数据封装成报文或者将报文拆卸成byte数组

(2、)在创建一个发送端和接收端的DatagramPacket对象时,使用的构造方法不同,接收端的构造方法只需要接收一个字节数组来存放接收到的数据,而发送端的构造方法不但要接收存放了发送数据的字节数组,还需要指定发送端IP地址和端口号

(3、)DatagramPacket(byte[]buf,int length)。

[1、] 构造DatagramPacket,数据装进buf数组,用来接收长度为length的数据包。该方法没有指定IP地址和端口号,其创建的对象只能用于接收端。

(4、)DatagramPacket(byte[]buf,int length,InetAddress address,int port)。

[1、] 从buf数组中,取出长度为length的数据创建数据包对象,发送到指定主机(address)的指定端口号(port)。该方法创建的对象通常用于发送端。

(5、)DatagramPacket(byte[]buf,int offset,int length)。

[1、] 构造DatagramPacket,用来接收长度为length的包,在缓冲区中指定了偏移量offset参数,该参数用于指定接收到的数据在放入buf缓冲数组时是从offset处开始的。

3月30日星期四_第6张图片

5DatagramSocket

(1、)是接收和发送UDP的Socket实例

(2、)数据报套接字是包投递服务的发送或接收点,每个在数据报套接字上发送或接收的包都是单独编址和路由的。

(3、)从一台机器发送到另一台机器的多个包可能选择不同的路由,也可能按不同的顺序到达。

(4、)DatagramSocket()

[1、] 构造数据报套接字并将其绑定到本地主机上任何可用的端口。通常系统会分配一个没有被其他网络程序所使用的端口号,用于客户端编程。

(5、)DatagramSocket(int port)

[1、] 创建实例,并固定监听Port端口的报文。创建数据报套接字并将其绑定到本地主机上的指定端口。既可用于接收端又可用于发送端。

(6、)DatagramSocket(int port,InetAddress laddr)

[1、] 创建数据报套接字,将其绑定到指定的本地地址。当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自laddr的报文。

3月30日星期四_第7张图片

 

你可能感兴趣的:(java)