zoukankan      html  css  js  c++  java
  • Java 网络编程 UDP协议

    网络编程

    TCP/IP协议:多台计算机网络连接的规则

    包括:TCP协议、IP协议、UDP协议和其它协议的协议组

    层次结构:

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

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

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

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

    IP地址和端口号   (端口号:软件编号  Mysql:3306

    IP地址: 唯一标识一台计算机,

    IPv4 4个字节(0-255) 用点分开 192.168.1.100

    IPv6 16个字节,解决了网络地址资源数量不够的问题

    端口号: 标识计算机中的应用程序  两个字节 范围是0~65535

    0~1023 知名的网络服务和应用,

    1024~65535:用户的普通应用程序需要使用

     

    InetAddress网络通信协议

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

    InetAddress inet=InetAddress.getLocalHost();//获取本地主机名、IP地址

    System.out.println(inet);//Super_pc/192.168.145.1    //192.168.1.147

     

    InetAddress inet2=InetAddress.getByName("Super_pc");//通过主机名(会重复)获取一个inet对象

    System.out.println(inet2);//Super_pc/192.168.145.1

    InetAddress inet3=InetAddress.getByName("192.168.145.1");//通过IP获取inet对象  可以是别人的IP

    System.out.println(inet3);//  /192.168.145.1

     

    System.out.println(inet3.getHostName()); //返回对象主机名

    System.out.println(inet3.getHostAddress()); //返回对象IP地址

    }

    UDP协议(传输 视频 音频)发送端  接收端

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

    发送端发出数据不会确认接收端是否存在

    接收端收到数据不反馈给发送端

    由于使用UDP协议消耗资源小,通信效率高,

    由于UDP的面向无连接性,不能保证数据的完整性,

    UDP传输数据被限制在64K以内

    public class UDPSend {//发送端

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

    Scanner sc=new Scanner(System.in);

    InetAddress inet=InetAddress.getByName("192.168.1.174");

    //通过IP获取地址对象

    DatagramSocket ds=new DatagramSocket(); //数据包发送对象

    while(true){

    String str=sc.nextLine();

    byte[] bytes=str.getBytes(); //要发送的数据 转字节

    DatagramPacket dp=new DatagramPacket(bytes,bytes.length,inet,6000);

            //数据包对象 (字节, 长度, 传输地址, 端口号)

    ds.send(dp);//发送数据包

    }

    //ds.close();//释放资源

    }

    }

    public class UDPRecieve {//接收端  先开启

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

    DatagramSocket ds=new DatagramSocket(6000);//数据包接收对象

    byte[] bytes=new byte[1024];//字节数组  用来接收 数据

    while(true){

    DatagramPacket dp=new DatagramPacket(bytes,bytes.length);

    //数据包对象

    ds.receive(dp); //接收数据 存储到dp

    int length=dp.getLength(); //接收数据的长度

    byte[] data = dp.getData(); //接收数据的字节数组

    //String dataStr = new String(data,0,length);//显示收到的数据

    String dataStr = new String(bytes,0,length);//显示收到的数据

    InetAddress inet = dp.getAddress(); //获取地址对象

    String ip = inet.getHostAddress(); //获取IP地址

    int port=dp.getPort(); //端口号

    System.out.print("IP地址:"+ip+",端口号:"+port+",内容:"+dataStr);

    }

    //ds.close();//释放资源

    }

    }

  • 相关阅读:
    如何只用5分钟完成数据 列表、创建页面
    从零开始搭建一个PaaS平台
    C# 多线程猜想
    使用Golang + lua实现一个值班机器人
    如何使用Golang实现一个API网关
    记一次Windb死锁排查
    怎样在PaaS平台上搭建一个会自动关闭的会议室
    JS Object To C# ASP.Net ModelBind
    重写了一遍授权思路
    授权详细设计
  • 原文地址:https://www.cnblogs.com/javscr/p/10252705.html
Copyright © 2011-2022 走看看