先说一下关于InetAddress类,用一个小例子:

import java.net.InetAddress;
import java.net.UnknownHostException;public class IPDemo {public static void main(String[] args) throws UnknownHostException {//        InetAddress i = InetAddress.getLocalHost();获取本地信息
//      System.out.println(i);  InetAddress i = InetAddress.getByName("www.baidu.com");System.out.println(i.getHostAddress());System.out.println(i.getHostName());}
}

UDP是一种面向无连接的传输方式,传输速度快,但是每次传输的大小不能超过64K

怎样来编写UDP?

发送数据步骤:

    1.创建socket服务

    2.创建数据包

    3.将数据封装到数据包中,添加ip和端口以及数据

    4.发送

    5.关闭资源

接收数据步骤:

    1.创建socket服务,并监听端口

    2.创建数据包,用来接收数据

    3.用socket接收数据到数据包中

    4.从数据包中取出数据

    5.关闭资源

下面用代码演示:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;class UdpSend{//1.创建socket服务//2.传输数据,并打包//3.发送//4.关闭资源public static void main(String[] args) throws Exception {//1.创建socket服务DatagramSocket socket = new DatagramSocket(10000);//指定发送器端口//2.传输数据,并打包byte[] buf = "udp hello".getBytes();DatagramPacket packet = new DatagramPacket(buf, buf.length, InetAddress.getByName("localhost"), 8888);//指定应用程序端口//发送socket.send(packet);//关闭资源socket.close();System.out.println("over");}
}
/** 1.创建服务socket,并监听端口* 2.定义一个数据包,用来接受数据包* 3.用socket服务接受的数据保存到,数据包中* 4.取出数据* 5.关闭资源*/
class UdpRece{public static void main(String[] args)  throws Exception {DatagramSocket ds = new DatagramSocket(8888);//指定应用程序的端口byte[] buf = new byte[1024]; DatagramPacket dp = new DatagramPacket(buf, buf.length);ds.receive(dp);String ip = dp.getAddress().getHostAddress();int port = dp.getPort();String data = new String(dp.getData(),0,dp.getLength());System.out.println(ip+":"+port+":"+data);ds.close();}
}public class UdpDemo {public static void main(String[] args) {}
}

上面传送一次数据,下面写一个增强版的。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;class Send{public static void main(String[] args) throws Exception {DatagramSocket socket = new DatagramSocket();BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));String line =null;while((line = reader.readLine())!=null){if("886".equals(line)){break;}byte[] buf = line.getBytes();DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),8888);socket.send(dp);}reader.close();socket.close();}
}
class Rece{@SuppressWarnings("resource")public static void main(String[] args) throws Exception {DatagramSocket socket = new DatagramSocket(8888);while(true){byte[] buf = new byte[1024];DatagramPacket dp =new DatagramPacket(buf, buf.length);socket.receive(dp);String data = new String(dp.getData(),0,dp.getLength());String ip = dp.getAddress().getHostAddress();int port = dp.getPort();System.out.println(ip+":"+port+":"+data);}}
}
public class UdpDemo2 {public static void main(String[] args) {}
}

 总结:其实java中将网络传输的部件,都封装成对象,非常方便使用,在网络编程中主要是记住步骤。

转载于:https://www.cnblogs.com/lzeffort/p/4714873.html

java中的UDP总结相关推荐

  1. java广播数据包发送_在Java中广播UDP数据包的正确和有效方法是什么?

    我需要在每个网络接口上广播UDP数据包.起初,我尝试播放到255.255.255.255,没有结果,后来我发现这个"已被弃用了大约20年".因此,我尝试在每个网络接口上进行迭代,以 ...

  2. java udp 线程,Java中的UDP DatagramSocket线程的高CPU使用率

    我正在运行一个多线程java服务器应用程序,其中包括在3个不同的线程上从3个不同的组播源(端口)接收UDP数据包 . 它运行在最近的双插槽redhat机箱上(总共8个核心(4 x 2 cpu),没有超 ...

  3. Java中的UDP程序设计基础

    UDP(用户数据报协议)是网络消息传输的另一种形式.基于UDP的通信和基于TCP的通信不同,基于UDP的信息传递更快,但不提供可靠的保证.使用UDP传递数据时,用户无法知道数据能否正确地到达主机,也不 ...

  4. java中的udp丢包_UDP丢包问题

    wxbcrefut:谢谢楼主分享,最近也遇到这种问题,我在虚机里测试(配置为8核16G内存),1s接受2W条数据丢包就特别严重,我还没有处理只是接受而已,不知道问题出在哪,求指教 我是用java写的, ...

  5. java中的udp丢包_udp丢包 处理

    什么会导致udp丢包呢,我这里列举了如下几点原因: 1.调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失.对于这种情况可以修 ...

  6. Java Swing编写udp数据传输的聊天程序demo

    Java Swing编写udp数据传输的demo 事情是这个样子的,那天上软件工程课,老师和我们说,让我们一个星期内编写出一个udp进行数据传输的聊天程序,高级软件工程那本教科书上有响应的demo,但 ...

  7. 【转】UDP协议格式以及在java中的使用

    UDP协议格式以及在java中的使用 UDP是面向无连接的通讯协议,由于通讯不需要连接,所以可以实现广播发送.UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出现丢包现象,实际应用中要求程序员编 ...

  8. java udp类_UDP及java中的类

    UDP及java中的类 类DatagramSocket DatagramPacket 1.客户端: (1) 创建客户端 DatagramSocket类 (2)准备数据 字节数组 (3)打包 Datag ...

  9. java 中的网络编程(Socket、TCP三次握手四次挥手、TCP/UDP/URL)

    文章目录 前言 一.网络编程概述 二.网络通信要素概述 1.如何实现网络中的主机互相通信 2.网络通信协议 3.IP和端口号 4.InetAddress类 5.网络协议 6.TCP/IP协议簇 7.T ...

  10. java中UDP实例代码

    第一部分代码:传输字符数据 客户端部分 package com.work.net.udp;import java.net.DatagramPacket; import java.net.Datagra ...

最新文章

  1. 图像色彩空间与应用转换
  2. Linux 性能监测工具总结
  3. java下拉框及响应函数_MVC 实现下拉框 - osc_88wjsceo的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. 服务器连接工具mat_将个人笔记本改造成Linux简易服务器
  5. bootstrap 垂直居中 布局_CSS3 flex 布局必须要掌握的知识点
  6. 魅族前副总裁李楠谈“苹果对5G判断”,理解万岁!
  7. 杭电1420 Prepared for New Acmer
  8. python的网页解析器_网页解析器(BeautifulSoup)-- Python
  9. 为什么不能完全相信自动驾驶?
  10. 软考中级-软件设计师-第1章 软件设计师考试介绍
  11. 动态图相册 android,动态图相册app|动态图相册下载_v1.36_9ht苹果下载
  12. 叶俊:让能量爆棚的秘诀
  13. 强化学习算法:AC系列详解
  14. H5 自定义生成海报
  15. java打印直角三角形解析_编写java程序,打印3个5行直角三角形图案 运行效果如下: 使用 方法 实现 代码截图,必须含有2位学号+姓名_学小易找答案...
  16. IceSSL插件配置
  17. ★教程3:Simulink学习教程入门60例目录
  18. 中国剩余定理 及 拓展中国剩余定理模板
  19. 路由控制配置ip ip-prefix命令解析
  20. 【ERP】MPS中ATP的算法介绍

热门文章

  1. 为socket的recv/send设置超时
  2. linux下用top命令查看,cpu利用率超过100%时怎么回事
  3. 移动通信matlab实现,现代移动通信中的调制技术研究及Matlab实现
  4. java not present_Java 8的可选的function.ifPresent和if-not-present的功能风格?
  5. java 字符串索引从0开始_Java程序从指定的索引中搜索子字符串
  6. 语言余一个负数_Python 中负数取余问题
  7. ftp关闭mysql约束校验_使用mysql验证配置ftp服务器
  8. 微信头像失效_如何判断微信授权的头像是否失效
  9. IntelliJ IDEA for CleanCode
  10. 使用sed在文件中定位文本的方式