网络通信协议

1.IP地址和端口号

通过IP地址可以连接到指定计算机,但如果想访问目标计算机中的某个应用程序,还需要指定端口号。在计算机中,不同的应用程序是通过端口号区分的。端口号是用两个字节(16位的二进制数)表示的,它的取值范围是0~65535,其中,0~1023之间的端口号用于一些知名的网络服务和应用,用户的普通应用程序需要使用1024以上的端口号,从而避免端口号被另外一个应用或服务所占用。

2.InetAddress类

常用方法:

  getByName()获取ip地址,静态方法

  getLocalHosr()获取本地主机,静态方法

  getHostName()获取主机名

  gethostAddress()返回IP地址字符串

3.UDP协议

用户数据报协议,

UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接

4.TCP协议

传输控制协议

TCP协议是面向连接的通信协议,即在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输

5.UDP通信

DatagramPacket类

构造方法:new DatagramPacket,明确要传输的数据,大小,IP地址,端口号

常用方法:

  getAddress获取IP地址

  getPort获取端口号

  getData返回数据

  genLength返回文件大小

DatagramSocket类

构造方法:创建发送端对象,创建接收端对象明确端口

常用方法:

  send()方法,发送数据

  receive()方法,接收数据

使用UDP通信

//udp协议的发送端
public class UDPSend {
    public static void main(String[] args) throws IOException {
        //本机ip 127.0.0.1
        //创建数据包对象,封装要发送的数据,明确接收端的ip和端口号
        byte[] bytes="你好吗".getBytes();
        InetAddress inet=InetAddress.getByName("127.0.0.1");
        DatagramPacket dp=new DatagramPacket(bytes, bytes.length,inet,8888);
        //创建快递公司对象
        DatagramSocket ds=new DatagramSocket();
        //发送出去
        ds.send(dp);
        //释放资源
        ds.close();
    }
//接收段
public class UDPRecieve {
    public static void main(String[] args) throws IOException {
        //创建快递公司对象,明确端口号
        DatagramSocket ds=new DatagramSocket(8888);
        //创建空的字节数组
        byte[] bytes=new byte[1024];
        //创建空的数据包对象,接收数据
        DatagramPacket dp=new DatagramPacket(bytes, bytes.length);
        //接收数据包
        ds.receive(dp);
        //拆包
        //获取发送端ip地址
        String ip=dp.getAddress().getHostAddress();
        //获取发送端端口号
        int port=dp.getPort();
        //获取数据长度
        int len=dp.getLength();
        System.out.println("ip地址为:"+ip+",端口号为:"+port+",发送内容为:"+new String(bytes,0,len));
        //释放资源
        ds.close();
    }

UDP通信步骤:

1.获取要发送的ip

2.明确要发送的数据

3.包装数据,数据大小,ip,端口号

4.创建DatagramSocket类,快递公司

5.发送数据

6.接收端,创建快递公司,明确端口号

7.创建空包,空数组

8.接收数据

9.输出数据,new String()

10.释放资源

posted @ 2020-11-09 11:39  杰斯-java  阅读(46)  评论(0)    收藏  举报