概念:

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. React中路由传参及接收参数的方式

    注意:  路由表改变后要重启服务      方式 一:          通过params         1.路由表中                     <Route path=' /s ...

  2. RxJava系列7(最佳实践)

    RxJava系列1(简介) RxJava系列2(基本概念及使用介绍) RxJava系列3(转换操作符) RxJava系列4(过滤操作符) RxJava系列5(组合操作符) RxJava系列6(从微观角 ...

  3. python操作mongodb

    # python操作mongodb # 首先,引入第三方模块pymongo,该模块是python用来操作mongodb的 import pymongo # 第二步,设置ip地址,以及表格名称,表格名字 ...

  4. cookielib和urllib2模块结合模拟网站登录

    1.cookielib模块 cookielib模块的主要作用就是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问internet资源,例如可以利用本模块的cookiejar类的对 ...

  5. [python]_ELVE_pip2和pip3如何共存

    作者:匿名用户链接:https://www.zhihu.com/question/21653286/answer/95532074来源:知乎著作权归作者所有,转载请联系作者获得授权. 想学习Pytho ...

  6. python中创建实例属性

    虽然可以通过Person类创建出xiaoming.xiaohong等实例,但是这些实例看上除了地址不同外,没有什么其他不同.在现实世界中,区分xiaoming.xiaohong要依靠他们各自的名字.性 ...

  7. mysql如何选择合适的数据类型1:CHAR与VARCHAR

    CHAR和VARCHAR类型类似,都用来存储字符串,但它们"保存"和"检索"的方式不同.CHAR属于"固定长度"的字符串,而VARCHAR属 ...

  8. ubuntu14.4 分辨率偏低

    最近出了 14.04 LTS,就想安装上玩一玩.还是用 easybcd 从 windows硬盘安装.装完之后,显示效果不好于是做了如下处理: 1. 按下windows键,搜索 "附加驱动&q ...

  9. Error:ivalue require as left operant of assignment

    Error:ivalue require as left operant of assignment 解答:该错误的意思是左操作数必须为左值,这个发生错误的原因在于赋值符号的左边不能是已确定的值,如: ...

  10. [BZOJ]4810: [Ynoi2017]由乃的玉米田

    Time Limit: 30 Sec  Memory Limit: 256 MB Description 由乃在自己的农田边散步,她突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差 ...