java基础-网络编程入门(UDP/TCP)

网络编程入门(UDP/TCP)

InetAddress 的使用

为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress供我们使用

InetAddress:此类表示Internet协议(IP)地址

static InetAddress getByName(String host) :确定主机名称的IP地址,主机名称可以是机器名称,也可以是IP地址

String getHostName() 获取此IP地址的主机名

String getHostAddress() 返回文本显示中的IP地址字符串

public class INetAdressDemo {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress address = InetAddress.getByName("127.0.0.1");
        String name = address.getHostName();
        String ip = address.getHostAddress();
        System.out.println(name);
        System.out.println(ip);
    }
}

协议:计算机网络中,连接和通信的规则被称为网络通信协议

UDP协议:

1)用户数据报协议

2)UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接。简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到数据时,也不会向发送端反馈是否收到数据

3)例如视频会议通常采用UDP协议,因这种情况即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。但是在使用UDP协议传数据时,由于UDP的面向无连接性,不能保证数据的完整性,因此在传输重要数据时不建议使用UDP协议

UDP通信原理:UDP是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,连接数据的对象因此对于基础UDP协议的通信双方而言,没有所谓的客户端和服务器的概念

java提供了DatagramSocket类作为基于UDP协议的Socket

public class Udp {

​    public static void main(String[] args) throws IOException {

​            *//创建发送端的 Socket对象*

​            DatagramSocket ds =new DatagramSocket();

​            byte[] bys = "hello,udp,我来了".getBytes();

​            InetAddress address = InetAddress.*getByName*("127.0.0.1");

​            *//构造一个数据包发送指定长度的包到指定主机上指定端口号*

​            DatagramPacket dp = new DatagramPacket(bys,bys.length,address,10086);

​            ds.send(dp);

​            *//关闭发送端*

​            ds.close();

​    }

}
class UdpRecive{

​    public static void main(String[] args) throws IOException {

​        *//创建接收端的socket对象*

​        DatagramSocket ds = new DatagramSocket(10086);

​        *//创建一个数据包用来接收数据*

​        byte[] bys = new byte[1024];

​        DatagramPacket dp = new DatagramPacket(bys,bys.length);

​        *//调用DatagramSocket对象的方法接收数据*

​        ds.receive(dp);

​        *//解析数据包并把数据从数据包中显示 返回数据缓冲区*

​        int length = dp.getLength();

​        byte[] dates = dp.getData();

​        String data = new String(dates,0,length);

​        System.*out*.println("数据是"+data);

​        *//关闭接收端*

​        ds.close();

​    }

}

TCP协议:

传输控制协议

TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间的可靠无差错的数据传输。在TCP连接中必须要明确客户端和服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”

三次握手:TCP协议中,在发送数据的准备阶段,客户端和服务器之间的三次交互,以保证连接的可靠

第一次握手:客户端向服务器发出连接请求,等待服务器确认

第二次握手:服务器向客户端回送一个响应,通知客户端接收到了连接请求

第三次握手:客户端再次向服务器发送确认信息,确认连接

完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了,由于这种面向连接的特性。TCP协议可以保证传输数据的安全,所以应用十分广泛。例如:上传文件、下载文件、浏览网页等

posted @ 2021-08-18 11:15  只要不兔的学习笔记  阅读(83)  评论(0)    收藏  举报