一、网络编程
网络通信是在网路实现两台或多台计算机的通信
(一)、网络协议
1、IP协议(Internet Protocol)
Internet网采用的协议是TCP/IP协议,在网络上每台计算机都有自己的IP地址,一个IP地址就代表一台计算机,IP地址是网络通信的基础
2、TCP/UDP协议
(1)UDP(User Datagram Protocol ,用户数据报协议)
UDP是无连接通信协议,两台计算机无需连接既可以传输数据,但是无法保证数据的安全,但是可以广播数据内容
(2)TCP(Transmission Control Protocol,传输控制协议)
TCP协议是一种以固定连线为基础的协议,就是两台计算机要相互确认之后才可以传输数据。TCP协议可以保证数据一定可以准确送达目的,保证数据的安全
(二)UDP程序设计
1.UDP程序的发送端
用到的类
(1)java.net.DatagramPacket 将数据打包
(2)java.net.DatagramSocket 将数据包送出去
步骤方法:
1.创建DatagramPacket对象将数据打包,
2.创建DatagramSocket
3.调用DatagramSocket中的send方法,发送数据
4.关闭资源
实现代码
public class UDPSendDome {
public static void main(String[] args) throws IOException{
//创建byte数组装发送数据
byte[] data = "你好UDP".getBytes();
//创建DatagramPacket对象绑定发送数据
DatagramPacket dp = new DatagramPacket(data, data.length,InetAddress.getByName("127.0.0.1"),8848);
//创建DatagramSocket对象发送数据
DatagramSocket ds = new DatagramSocket();
//调用send方法发送数据
ds.send(dp);
ds.close();
}
}
2.UDP的接收端
类与发送端相同
步骤:
1.建立字节数组,接收传输的数据
2.建立DatagramPacket对象,绑定接收的字节数组和接收长度
DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包
3.创建DatagramSocket对象
DatagramSocket(int port) 创建数据报套接字并将其绑定到本地主机上的指定端口。
4.拆包
发送的IP地址
DatagramPacket中的方法getAddress()
发送端的端口号
DatagramPacket中的方法getPort()
发送的数据长度
DatagramPacket中的方法getLength()
5.关闭资源
实现代码
public static void main(String[] args) throws IOException{
//创建一个用于接收的数组
byte[] data = new byte[1024];
//创建接收数据对象
DatagramPacket dp = new DatagramPacket(data, data.length);
//创建接收数据包的对象,并绑定端口号
DatagramSocket ds = new DatagramSocket(8848);
//调用方法receive接收数据
ds.receive(dp);
//获取发送的IP地址
String ip = dp.getAddress().getHostAddress();
//获取发送端的端口号
int port = dp.getPort();
//获取发送数据的长度
int length = dp.getLength();
System.out.println(new String(data,0,length)+"---"+ip+"---"+port);
//关闭资源
ds.close();
(三)、TCP程序设计
TCP程序分为客户端与服务器,主要通过ServerSocket与Socket两个类来实现
1.服务器
实现TCP网络连接客户端
- java.net.serversocket
- 构造方法:
- ServerSocket(int port) 绑定一个端口号
- 获取客户端的套接字对象
- Socket accept() 侦听并接受到此套接字的连接。
- 然后采用Socket中的IO流方法实现数据的传输
2.客户端
实现TCP网络连接
- 客户端的实现采用java.net.socket
- 构造方法:
- Socket(String host , int port) 创建一个流套接字并将其连接到指定主机上的指定端口号。
- 通过Socket中的IO流方法实现数据的上传与下载
- OutputStream getOutputstream() 返回此套接字的输出流。数据上传
- InputStream getInputStream() 返回此套接字的输入流。数据下载
TCP协议中数据传输主要通过Socket类中方法所获得的IO流来实现