概念:

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. LinkedHashMap就这么简单【源码剖析】

    前言 声明,本文用得是jdk1.8 前面已经讲了Collection的总览和剖析List集合以及散列表.Map集合.红黑树还有HashMap基础了: Collection总览 List集合就这么简单[ ...

  2. python基础——内置函数

    python基础--内置函数  一.内置函数(python3.x) 内置参数详解官方文档: https://docs.python.org/3/library/functions.html?highl ...

  3. 工作笔记 | Visual Studio 调用 Web Service

    引言 最近笔者负责ERP财务系统跟中粮集团财务公司的财务系统做对接,鉴于ERP系统中应付结算单结算量比较大,而且管理相对集中,ERP系统与中粮财务公司的支付平台系统对接,实现银企直联,将网银录入的环节 ...

  4. SpringBoot(一):使用eclipse/idea创建springboot helloword工程

    eclipse如何创建spring boot工程: 第一步:首先打开eclipse,找到图中的下图的中“下三角”符号,选中"working sets"(表示将会把eclipse中的 ...

  5. SpringMVC(五):@RequestMapping下使用@RequestParam绑定请求参数值

    在处理方法入参使用@RequestParam可以把请求参数传递给请求方法,@RequestParam包含的属性值: --- value :参数名称 --- required :是否必须,默认为true ...

  6. MyBatis(1)——快速入门

    MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...

  7. jsonViewer json格式化工具

    以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这 ...

  8. Java动态代理模式浅析

    Java代理设计模式 - 静态代理 Java中的动态代理 - 调用处理器 代理设计模式的UML图: 我将首先介绍Java中的各种代理实现方法 Java代理设计模式 - 静态代理 这个例子非常简单,只有 ...

  9. [LeetCode] Print Binary Tree 打印二叉树

    Print a binary tree in an m*n 2D string array following these rules: The row number m should be equa ...

  10. codeforces 842C Ilya And The Tree

    Ilya is very fond of graphs, especially trees. During his last trip to the forest Ilya found a very ...