1. 介绍UDP

UDP与TCP相比,它是不可靠的传输,但是它效率高。对于UDP的传输有这样的一个特点那就是在传输时不需要对方的应答,直接将信息给了对方,至于对方是否接收到,它是不管的,所以它是不可靠的。因此,对于UDP来说是严格上来说是不存在客户端与服务端的,我们这里的例子讲解还是分为客户端与服务端来说,主要是为了方便大家的理解。

2.UDP例子

1)        首先,我们创建一个服务端的UDP取名为TestUDPServerl.这里我们需要定义我们服务端的UDP的端口号,而不是TCP的端口号,这两都是有区别的。定义这个端口号主要是提供给客户端使用的。当然,对于UDP来说传输是以包的形式来进行的,所以对于服务端来说是拿到一个包,然后做解包读取,所以我们使用到类DatagramPacket的类,使用DatagramSocket的方法receive()方法来接收这个DatagramPacket包的信息。

package com.owen.socket;import java.net.*;
import java.io.*;/*** 服务端 UDP* @author OwenWilliam 2016-7-24* @since* @version v1.0.0**/
public class TestUDPServer
{public static void main(String args[]) throws Exception{byte buf[] = new byte[1024];DatagramPacket dp = new DatagramPacket(buf, buf.length);//服务端提供的端口DatagramSocket ds = new DatagramSocket(5678);while (true){//接收到信息ds.receive(dp);//转换为字节ByteArrayInputStream bais = new ByteArrayInputStream(buf);//输入DataInputStream dis = new DataInputStream(bais);//readLong()读取字节System.out.println(dis.readLong());}}
}

2)        其次,我们创建一个服务端的UDP,取名为TestUDPClient.java.这里我们用到了ByteArrayputStream的字节流,主要是转换long类型的数据。所以在向外发的时候,我们需要使用DataOutputStream的writeLong()的方法。这里需要注意的是,我们客户端在发送的时候,我们是以包的形式发到路由器的,所以我们先用DatagramSocket封装信息,但是这里我们需要new一个InetSocketAddress的类,这个说明,当我们把包给了路由器之后,告诉路由器,当前的包应该发到什么地方,也就是IP和服务端的端口号。之后,我们别忘了这里需要我们自己指定自己本地的端口号也就是DatagramSocket中指定,这个说明客户端占据了当前这个端口向服务端的端口发信息。

 package com.owen.socket;
import java.net.*;
import java.io.*;/*** UDP 客户端* @author OwenWilliam 2016-7-24* @since* @version v1.0.0**/
public class TestUDPClient
{public static void main(String args[]) throws Exception{long n = 10000L;//字节输出流ByteArrayOutputStream baos = new ByteArrayOutputStream();DataOutputStream dos = new DataOutputStream(baos);dos.writeLong(n);//long类型转换为字节byte[] buf = baos.toByteArray();
System.out.println(buf.length);//要发送出去有东西包装在DatagramPacket中//InetSocketAddress指定发送的地址的端口号,这就好比,你把要发出去的信息放到包里//然后将包给了路由哭器,路由器需要知道你要发到哪DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678));//client端占据了9999端口,向5678端口发数据DatagramSocket ds = new DatagramSocket(9999);//发数据ds.send(dp);ds.close();}
}

3)        执行结果

client端:

Server端:

Java网络编程之UDP相关推荐

  1. 萌新解--Java网络编程之UDP

    Java网络编程之UDP UDP协议为无连接的通信协议,在传数据前发送端与接收端不会先建立连接,也就是你发我就收但不一定会收到哦,以我们自身为发送端,我们不会事先让接收方知道我要给接收方发数据啦.就像 ...

  2. Java网络编程之UDP和TCP套接字

    文章目录 一. 网络编程概述 二. UDP网络编程 1. UDP套接字 2. UDP客户端回显服务器程序 2.1 UDP回显服务器 2.2 UDP客户端 2.3 UDP实现查词典的服务器 三. TCP ...

  3. Java网络编程之UDP与TCP的网络编程

    ⭐️前面的话⭐️ 本文将介绍java中的网络编程,常见的网络编程方式有两种,一种是UDP,另外一种是TCP,其中UDP的服务器与客户端之间不需要建立连接就能进行通信,而TCP需要先建立服务器与客户端之 ...

  4. Java网络编程之TCP、UDP

    Java网络编程之TCP.UDP 2014-11-25 15:23 513人阅读 评论(0) 收藏 举报 分类: java基础及多线程(28) 版权声明:本文为博主原创文章,未经博主允许不得转载. J ...

  5. 浅谈Java网络编程之Socket (2)

    <浅谈Java网络编程之Socket (1)>中我们已经和大家说到客户端的网络编程,下面和大家分享的是服务器的实现代码. import java.net.*; import java.io ...

  6. Python中的网络编程之UDP

    Python中的网络编程之UDP 文章目录 Python中的网络编程之UDP 一.Socket编程 `1.什么是客户端/服务器架构`? **`2.套接字:通信端点`** 3.套接字地址:主机-端口对 ...

  7. 浅谈Java网络编程之Socket (1)

    和大家一起分享的是Java网络编程之Socket.在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是get ...

  8. Java网络编程之NIO编程(待补充)

    Java网络编程之NIO编程(待补充) 学习网站1:http://ifeve.com/java-nio-all/ 学习网站2:http://www.ibm.com/developerworks/cn/ ...

  9. java网络编程之TCP通讯

    java中的网络编程之TCP协议的详细介绍,以及如何使用,同时我在下面举2例说明如何搭配IO流进行操作, 1 /* 2 *TCP 3 *建立连接,形成传输数据的通道: 4 *在连接中进行大数据量传输: ...

  10. 1.6 网络编程之 UDP通信

    ************************************************** * 本文由小鸟飞飞整理发表 <samboy@sohu.com> * * 首发网站:蓝丽 ...

最新文章

  1. VMware 全虚拟打开
  2. javap使用实例图解
  3. 实时音频抗弱网技术揭秘
  4. 使用java获取本机mac
  5. cnn卷积神经网络_5分钟内卷积神经网络(CNN)
  6. java 操作db2_java操作DB2,增删改查
  7. python 美化ppt_使用python-pptx包批量修改ppt格式的实现
  8. leetcode hot 3-4
  9. 代码文档生成工具-Doxygen生成CHM和RTF图文教程
  10. python函数拟合求导_python – 使用scipy curve_fit通过两个数据点拟合指数函数
  11. VC2013/MFC,异常: 0xC0000005
  12. 六自由度机械臂研究(3)- 机械臂DH参数表建立
  13. 网线:568A 568B线序
  14. java面试题——常见项目真实面试题(实际面试被问到)
  15. 没项目实战经验?分享自学练手的软件测试项目实战+数据库+接口,部署超级简单
  16. Java使用freemarker生成word文档并转pdf文档
  17. 计算机工程技术学术活动,第六届电气、电子和计算机工程研究国际学术研讨会将于南京举办!...
  18. 计算机与英语教学相结合,计算机与英语教学结合_英语论文.doc
  19. 春季高考山东招生学校计算机,2017年山东春季高考信息技术专业本科招生院校...
  20. 干货:程序员到底该不该接私活?

热门文章

  1. Snabbt.js – 极简的 JavaScript 动画库
  2. 二十、K8s集群设置2- HTTPS-CFSSL
  3. 华为RSTP和MSTP相关配置命令
  4. Ubuntu 16.04 折腾日记
  5. Spring 相关jar包下载及其地址(官方下载地址 )
  6. 内容可编辑且随内容自增长的div
  7. Flappy Bird 单机版
  8. Windows XP搜索功能 包含文字 搜索不到内容的解决办法
  9. java代码用户界面网格布局GridLayout.划分为格子区域
  10. 大话西游之Office应用实例系列! 19