设为首页 加入收藏

TOP

Java基础之网络通信协议--TCP与UDP(一)
2019-08-04 00:10:11 】 浏览:106
Tags:Java 基础 网络通信 协议 --TCP UDP

个人理解:


  了解区分UDP与TCP的不同,正常情况都是两者结合的使用模式!为了更好的传输,经常会开多线程进行传输的!


一、网络通信协议:


1、TCP/IP协议:


四层:应用层、传输层、网络层和链路层:



链路层:链路层是用于定义物理传输通道,通常是对某些网络连接设备的驱动协议,例如针对光纤、网线提供的驱动。


网络层:网络层是整个TCP/IP协议的核心,它主要用于将传输的数据进行分组,将分组数据发送到目标计算机或者网络。


传输层:主要使网络程序进行通信,在进行网络通信时,可以采用TCP协议,也可以采用UDP协议。


应用层:主要负责应用程序的协议,例如HTTP协议、FTP协议等。


2、IP地址和端口号:


①、IP地址,它可以唯一标识一台计算机:


  以前为IPV4,现在是IPV6的16个字节表示地址。


②、端口号:两个字节:0-65535。一般为1024以上的端口号。


3、InetAddress类:


 


public class Demo01 {
    public static void main(String[] args) throws UnknownHostException {
        InetAddress inet=InetAddress.getByName("192.168.1.163");//里面是自己的ip地址
        //从对象中获取IP地址
        System.out.println(inet.getHostAddress());
        //获取主机名
        System.out.println(inet.getHostName());
        //获取本地主机ip对象
        InetAddress inet2=InetAddress.getLocalHost();
        System.out.println(inet2.getHostAddress());
        System.out.println(inet2.getHostName());
    }
}


 


 二、UDP与TCP协议:


1、UDP协议:


  User Datagram Protocol 用户数据报协议--无连接的通信协议:不能保证数据的完整性,随缘!!!64K以内。


2、TCP协议:


  Transmission Control Protocol  传输控制协议---面向连接的通信协议:


在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据。


  在TCP连接中必须要明确客户端与服务器端,由客户端向服务端发出连接请求,每次连接的创建都需要经过“三次握手”。第一次握手,客户端向服务器端发出连接请求,等待服务器确认,第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求,第三次握手,客户端再次向服务器端发送确认信息,确认连接。


三、UDP通讯:


1、DatagramPacket:数据打包类:


用于封装UDP通信中发送或者接收的数据。


2、DatagramSocket:“码头”:可以发送和接收DatagramPacket数据包


 


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;


//发送端
public class UDPSend {
    public static void main(String[] args) throws IOException {
        //封装数据
        byte[ ] bytes="你好UDP".getBytes();
        //封装ip地址
        InetAddress inet=InetAddress.getByName("127.0.0.1");
        //1。创建数据打包对象,封装要发送的数据、长度、接收端的IP地址和端口号
        DatagramPacket dp=new DatagramPacket(bytes,bytes.length,inet,6000);
        //2.创建DatagreamSocket对象(快递公司)
        DatagramSocket ds=new DatagramSocket();
        //3.发送数据包
        ds.send(dp);
        //释放资源
        ds.close();
    }
}


 


 


import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;


//接收端
public class UDPReceive {
    public static void main(String[] args) throws IOException {
        //创建DatagramSocket对象,明确端口号
        DatagramSocket ds=new DatagramSocket(6000);
        //2.创建字节数组负责接收发来的数据
        byte [] bytes=new byte[1024];
        //3.创建数据拆包对象
        DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
        //4.接收数据包
        ds.receive(dp);
        //5.拆包
&n

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python使用LDAP做用户认证 下一篇Java基础之HttpServletResponse响..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目