概念:

UDP协议(用户数据报协议)是无连接,不可靠的,无序的。速度比较快,

UDP协议以数据报作为数据传输的载体

进行数据传输时,首先将传输的数据定义成数据报(Datagram),在数据报中指明数据将要到达的Socket(主机地址和端口号),然后再将数据发送出去。

相关操作类:

DatagramPacket:表示数据报包

DatagramSocket:进行端到端通信的类

示例:

服务器端实现步骤

1.创建DatagramSocket,指定端口号

2.创建DatagramPacket

3.接收客户端发送的数据信息

4.读取数据

客户端实现步骤

1.定义发送信息

2.创建DatagramPacket,包含将要发送的信息

3.创建DatagramSocket

4.发送数据

 package zhang;

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

 /**
  * 服务器端,实现基于UDP的用户登陆
  * */
 public class UDPServer {
     public static void main(String[] args) throws IOException {
         //1.创建服务器端DatagramSocket,指定端口
         DatagramSocket socket=new DatagramSocket(8800);
         //2.创建数据报,用于接收客户端发送的数据
         byte[] data=new byte[1024];//创建字节数组,指定接收数据的大小
         DatagramPacket packet=new DatagramPacket(data,data.length);
         //3.接收客户端发送的数据
         System.out.println("服务器端已经启动,等待客户端发送信息");
         socket.receive(packet);//此方法在接收到数据报之前会一直处于阻塞
         //4.读取数据
         String info=new String(data,0,packet.getLength());
         System.out.println("我是服务器,客户端说:"+info);

         //关闭
         socket.close();
     }
 }
 package zhang;

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

 /**
  * 客户端
  * */
 public class UDPClient {
     public static void main(String[] args) throws IOException {
         //1.定义服务器的地址,服务器的端口号以及将要发送的数据
         InetAddress address=InetAddress.getByName("localhost");
         int port=8800;
         byte[] data="用户名:admin;密码:123".getBytes();
         //2.创建数据报,包含发送的数据信息
         DatagramPacket packet=new DatagramPacket(data,data.length,address,port);
         //3.创建DatagramSocket对象
         DatagramSocket socket=new DatagramSocket();
         //4.向服务器发送数据报
         socket.send(packet);

         //关闭
         socket.close();
     }
 }

启动顺序:

  先启动服务器:

    输出:服务器端已经启动,等待客户端发送信息

  再启动客户端:

    输出:

      服务器端已经启动,等待客户端发送信息
      我是服务器,客户端说:用户名:admin;密码:123

UDP网络编程的更多相关文章

  1. JAVA UDP网络编程学习笔记

    一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...

  2. unix域套接字UDP网络编程

    unix域套接字UDP网络编程,服务器如下面: #include <stdio.h> #include <stdlib.h> #include <string.h> ...

  3. TCP/UDP网络编程的基础知识与基本示例(windows和Linux)

    一.TCP编程的一般步骤 服务器端: 1.创建一个socket,用函数socket() 2.绑定IP地址.端口等信息到socket上,用函数bind() 3.开启监听,用函数listen() 4.接收 ...

  4. TCP与UDP网络编程总结(一)

    (1):TCP网络编程 我们注意到服务端与客户端通信时是通过客户端的套接字相互通信的,那么服务端的套接字主要是干什么用的呢? TCP服务端设置监听套接字时 int listen(int sock,in ...

  5. Java UDP网络编程 - 最简单示例

    UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...

  6. 自测之Lesson15:TCP&UDP网络编程

    题目:编写一个TCP通信的程序. 实现代码: #include <stdio.h> #include <sys/socket.h> #include <unistd.h& ...

  7. 【linux高级程序设计】(第十五章)UDP网络编程应用 2

    UDP广播通信 单播:一对一,TCP和UDP均可完成 广播:只能UDP完成.广播时发送方只发送一个数据包,但是网络上的交换机默认转发广播数据包到所有端口.路由器默认不转发任何广播数据包.故广播在局域网 ...

  8. java udp网络编程

    import java.net.*; /* 通过UDP传输发送文字数据 1.建立socket服务 2.提供数据,并封装到数据包中 3.通过sokect服务的发送功能,将数据包发送出去 4.关闭资源 * ...

  9. 【linux高级程序设计】(第十五章)UDP网络编程应用 5

    域名与IP信息解析 /etc/hosts 文件中有部分IP地址与域名主机名的信息 /etc/resolv.conf 里面有DNS服务器的IP地址 struct hostent { char *h_na ...

随机推荐

  1. Spring Security入门(3-4)Spring Security 异常处理、异常传递和异常获取

  2. 三十天学不会TCP,UDP/IP网络编程 -- RTT的计算

    欢迎去gitbook(https://www.gitbook.com/@rogerzhu/)看到完整版. 如果对和程序员有关的计算机网络知识,和对计算机网络方面的编程有兴趣,虽然说现在这种“看不见”的 ...

  3. jquery-模仿qq提示消息

    ( function() { var ua = navigator.userAgent.toLowerCase(); var is = (ua.match(/\b(chrome|opera|safar ...

  4. 脱upx壳--初试--单步追踪

    脱upx壳--初试--单步追踪 这里的练习题目是reversing.kr 的Easy Crack 我自己用upx加壳工具给它加了个壳,由于原文件逻辑简单,所以用它来练练手 之后用到的工具是IDA和Ol ...

  5. UVA732【DFS+栈】

    题目:已知两个单词,利用一个栈,将第一个单词变成第二个单词,求出所有可能的操作序列. #include <stdio.h> #include<iostream> #includ ...

  6. Python生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...

  7. Hibernate(三): org.hibernate.HibernateException: No CurrentSessionContext configured!

    Hibernate版本5.2.9 获取Session的方式是sessionFactory.getCurrentSession(); 比较老一些的版本使用的是sessionFactory.openSes ...

  8. POJ-1182 食物链---并查集(附模板)

    题目链接: https://vjudge.net/problem/POJ-1182 题目大意: 中文题,不多说. 思路: 给每个动物创建3个元素,i-A, i-B, i-C i-x表示i属于种类x,并 ...

  9. js中获取元素的样式兼容性的写法

    1:设计元素的样式:el.style.color="red"||el.style["color"]="red"  获取元素的样式:el.st ...

  10. Spring Cloud学习笔记-007

    声明式服务调用:Spring Cloud Feign Feign基于Netflix Feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两 ...