先说一下关于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中将网络传输的部件,都封装成对象,非常方便使用,在网络编程中主要是记住步骤。

java中的UDP总结的更多相关文章

  1. Java中的UDP协议编程

    一. UDP协议定义   UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层.UDP有不提供数据报分组.组装和不能对数据包 ...

  2. 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)

    1.什么是UDP协议? UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层,处于IP协议的上一层. ...

  3. Java中的UDP应用

    我在<JavaSE项目之聊天室>中通过遵守TCP协议的ServerSocket与Socket实现了聊天室的群聊窗口.同时,在介绍OSI与TCP/IP参考模型时,也曾提及TCP与UDP(全称 ...

  4. Java中使用UDP实现简单的聊天功能

    通过DatagramSocket类来实现.此类表示用来发送和接收数据报包的套接字. 发送端代码如下: import java.io.IOException; import java.net.*; im ...

  5. Java 中UDP原理机制及实现方式介绍(建议阅读者阅读前了解下Java的基础知识,一方便理解)

    1.基本概念介绍: 首先得简单介绍下UDP. UDP( User Datagram Protocol )协议是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模型中,在第四层——传输层, ...

  6. JAVA中UDP使用

    UDP协议 在有些应用程序中,保持最快的速度比保证每一位数据都正确到达更重要.例如,在实时音频或视频中,丢失数据包只会作为干扰出现.干扰是可以容忍的,但当TCP请求重传或等待数据包到达而它却迟迟不到时 ...

  7. Java中的TCP/UDP网络通信编程

    127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问. 端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户 ...

  8. Java中的网络编程

    ​ Java中的网路编程主要是Java的Socket编程,属于JavaEE中的高级的部分,以下内容是对java网路编程的一个小结,代码都是经过编译调试的 C/S程序应用:客户/服务器模式,如QQ客户端 ...

  9. HTTP协议报文、工作原理及Java中的HTTP通信技术详解

    一.web及网络基础       1.HTTP的历史            1.1.HTTP的概念:                 HTTP(Hyper Text Transfer Protocol ...

随机推荐

  1. 搭建私有maven库发布及使用流程

    一:背景 Apache Maven是当Java技术栈前最流行的项目管理工具,它提供了一系列方便快捷的命令帮助程序员们进行Java工程的开发工作.Maven服务器位于美国,由于出国带宽和众多因素,在国内 ...

  2. MySQL运行一段时间后自动停止问题的排查

    在进入主题前,一定要先吐槽下自己,前段时间购买了一台阿里云服务器,最开始打算只是自己个人用的,就买了一台配置很寒碜的服务器: CPU: 1核 内存: 1 GB 操作系统: CentOS 7.2 64位 ...

  3. Windows Server 2008 IIS 并发请求设置

    更新服务器的时候,突然发现部分机器出现了错误,大致描述如下 HTTP Error 503.2 - Service Unavailable 正在超过 serverRuntime@appConcurren ...

  4. 小明的存钱计划 南阳acm54

    小明的存钱计划 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 小明的零花钱一直都是自己管理.每个月的月初妈妈给小明300元钱,小明会预算这个月的花销,并且总能做到实际花 ...

  5. B1008 数组元素循环右移问题 (20分)

    B1008 数组元素循环右移问题 (20分) 思路 1 2 3 4 5 6 5 6 1 2 3 4 6个数,循环右移2位. 也可以理解为 先翻转 6 5 4 3 2 1 然后再两部分,分别翻转 5 6 ...

  6. Hive LanguageManual DDL

    hive语法规则LanguageManual DDL SQL DML 和 DDL 数据操作语言 (DML) 和 数据定义语言 (DDL) 一.数据库 增删改都在文档里说得也很明白,不重复造车轮 二.表 ...

  7. Android 布局跟着NAVIGATION_BAR 重新布局

    要想让自己的布局跟着NAVIGATION_BAR 的变化重新布局,就不要设置 SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION. 这个FLAG. 这个flag 设置之后,你的 ...

  8. bootstrap设计进度条和圆点

    1.设计进度条.文字前面的圆点和图片 2.思路: (1)设计进度条 (a) 进度条有滚动效果,要加上类.active (b)进度条的颜色通过类.progress-bar-success来写,可以写成. ...

  9. 获取IMSI

    转:http://letsunlockiphone.guru/find-imsi-number/ HOW TO FIND IMSI NUMBER (UPDATED) You probably alre ...

  10. Tomcat详解及SNS系统的部署实现

    Tomcat详解及SNS系统的部署实现   http://jungege.blog.51cto.com/4102814/1409290