UDP协议,简单的说就是,发信息。

不管对方有没有收到。

发送端:

import java.net.*;
public class UDP_Send {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(); byte[] buf = "我是王二萌remoo,你也可以叫我remoo".getBytes();
int length = buf.length;
InetAddress ip = InetAddress.getByName("localhost");
int port = 8899; DatagramPacket dp = new DatagramPacket(buf,length,ip,port);
ds.send(dp);
ds.close();
}
}

接收端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDP_Receive {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(8899);//如果要监听,则在构造的时候就要指定需要监听的端口。 byte[] buf = new byte[1024];
int length = buf.length;
DatagramPacket dp = new DatagramPacket(buf,length);
ds.receive(dp); String str = new String(dp.getData(),0,dp.getLength());
System.out.println(str);
ds.close();
}
}

先运行接收端,再运行发送端。

成功接收信息!

如何持续发送和接收数据呢?

发送端:

import java.net.*;
import java.util.Scanner; public class UDP_Send {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket();
Scanner sc = new Scanner(System.in); while(true){
// byte[] buf = "我是王二萌remoo,你也可以叫我remoo".getBytes();
byte[] buf = sc.next().getBytes();
int length = buf.length;
InetAddress ip = InetAddress.getByName("localhost");
int port = 8899; DatagramPacket dp = new DatagramPacket(buf,length,ip,port);
ds.send(dp);
}
//ds.close();
}
}

接收端:

import java.net.*;
public class UDP_Receive {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket(8899);//如果要监听,则在构造的时候就要指定需要监听的端口。 while(true){
byte[] buf = new byte[1024];
int length = buf.length;
DatagramPacket dp = new DatagramPacket(buf,length);
ds.receive(dp); String str = new String(dp.getData(),0,dp.getLength());
InetAddress ip = dp.getAddress(); System.out.println("来自:"+dp.getSocketAddress()+"的信息\n"+str+"\n-----------");
}
//ds.close();
}
}

运行效果:

设置当用户输入“end”的时候终止发送

发送端:使用str.equal()就可以啦。

import java.net.*;
import java.util.Scanner; public class UDP_Send {
public static void main(String[] args) throws Exception {
DatagramSocket ds = new DatagramSocket();
Scanner sc = new Scanner(System.in); while(true){
// byte[] buf = "我是王二萌remoo,你也可以叫我remoo".getBytes();
String str = sc.next();
if(str.equals("end"))break;
byte[] buf = str.getBytes();
int length = buf.length;
InetAddress ip = InetAddress.getByName("localhost");
int port = 8899; DatagramPacket dp = new DatagramPacket(buf,length,ip,port);
ds.send(dp);
}
ds.close();
}
}

当用户输入end的时候,退出发送端。大家也可以通过输入某些文字让接收端关闭!请大家自行探索。

最新文章

  1. Sharepoint 2010、Sharepoint 2013浏览器打开CAD(.dwg)
  2. [转载]50个Demo展示HTML5无穷的魅力
  3. HTML5+学习笔记1-------边看代码边研究中
  4. HPC Linux
  5. 整合GreyBox放大显示图片
  6. LevelDB系列之SSTable(Sorted Strings Table)文件
  7. Azure 负载平衡器新分发模式
  8. MVC4网站发布到windows server 2003服务器
  9. Delphi- 调用存储过程的方法
  10. java 学习连接
  11. 201521123031 《Java程序设计》 第十周学习总结
  12. Hibernate(三): org.hibernate.HibernateException: No CurrentSessionContext configured!
  13. netty源码学习
  14. 转载 :实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)
  15. Mac如何搭建 配置 virtualenv python虚拟环境(超级详细,适合小白)
  16. Android-fragment的替换-V4支持包
  17. Ubuntu各版本的历史发行界面
  18. const限定符用法汇总
  19. 【原创】c# Winform 使用 web 的UrlEncode/UrlDecode 方法
  20. 详解google Chrome浏览器(理论篇)

热门文章

  1. C#中将字符串转换成数值
  2. Spring框架系列(10) - Spring AOP实现原理详解之AOP代理的创建
  3. Node.js精进(7)——日志
  4. 『现学现忘』Git后悔药 — 27、版本回退介绍
  5. Tapdata肖贝贝:实时数据引擎系列(三) - 流处理引擎对比
  6. 1 什么是Zookeeper 能干什么
  7. S32K148_CAN驱动(裸机开发)
  8. 07 MySQL_SQL数据类型
  9. flex这些问题应该被理解
  10. CMake库搜索函数居然不搜索LD_LIBRARY_PATH