JAVA之面向网络编程
JAVA之面向网络编程
一、网络协议
1、TCP/IP协议层次结构
(1)链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。
(2)网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。
(3)传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。
(4)应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。
2、IP地址和端口号
(1)IP:唯一标识一台计算机,IP地址广泛使用的版本是IPv4,由4个字节大小的二进制数来表示
(2)端口:不同的应用程序是通过端口号区分的,端口号是用两个字节(16位的二进制数)表示的,它的取值范围是0~65535
二、InetAddress
1、常用封装IP地址的方法
(1)getByName:在给定主机名时确定主机的IP地址
(2)getLocalHost:返回本地主机
(3)getHostName : 获取此IP地址的主机名
(4)getHostAddress: 返回IP地址字符串
2、代码
InetAddress address = InetAddress.getByName(“192.168.1.100”);
三、UDP协议
1、简介
UDP面向无连接性,不能保证数据的完整性,消耗资源小,通信效率高。
2、DatagramPacket
DatagramPacket类实例对象就相当于一个集装箱,用于封装UDP通信中发送或者接收的数据。
常用方法:
(1)getAddress:返回某台机器的IP值
(2)getPort:返回某台远程主机的端口号
(3)getData:返回数据缓冲区
(4)getLength:返回将要发送或接收到的数据长度
3、DatagramSocket
DatagramSocket类的实例对象就可以发送和接收DatagramPacket数据包。
常用方法:
(1)receive:接收数据报包
(2)send:发送数据报包
4、代码
//创建接收端Socket对象
DatagramSocket ds = new DatagramSocket(8080);
//接收数据
//DatagramPacket(byte[] buf, int length)
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys,bys.length);
ds.receive(dp);
四、TCP协议
1、简介
TCP通信是严格区分客户端与服务器端,客户端主动连接诶服务端。两个类用于实现TCP程序,一个是ServerSocket类,用于表示服务器端,一个是Socket类,用于表示客户端。
2、ServerSocket
ServerSocket对象负责监听某台计算机的某个端口号,在创建ServerSocket对象后,需要继续调用该对象的accept()方法,接收来自客户端的请求。当执行了accept()方法之后,服务器端程序会发生阻塞,直到客户端发出连接请求。
3、Socket
常用方法:
(1)getPort:Socket对象与服务器端连接的端口号
(2)InetAddress getLocalAddress():获取Socket对象绑定的本地IP地
(3)void close():关闭Socket连接,结束本次通信
(4)InputStream getInputStream()
(5)OutputStream getOutputStream()