【Java】学习路径54-使用UDP协议开发发送、接收端
2024-10-20 07:43:18
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的时候,退出发送端。大家也可以通过输入某些文字让接收端关闭!请大家自行探索。
最新文章
- Sharepoint 2010、Sharepoint 2013浏览器打开CAD(.dwg)
- [转载]50个Demo展示HTML5无穷的魅力
- HTML5+学习笔记1-------边看代码边研究中
- HPC Linux
- 整合GreyBox放大显示图片
- LevelDB系列之SSTable(Sorted Strings Table)文件
- Azure 负载平衡器新分发模式
- MVC4网站发布到windows server 2003服务器
- Delphi- 调用存储过程的方法
- java 学习连接
- 201521123031 《Java程序设计》 第十周学习总结
- Hibernate(三): org.hibernate.HibernateException: No CurrentSessionContext configured!
- netty源码学习
- 转载 :实例详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化(一)
- Mac如何搭建 配置 virtualenv python虚拟环境(超级详细,适合小白)
- Android-fragment的替换-V4支持包
- Ubuntu各版本的历史发行界面
- const限定符用法汇总
- 【原创】c# Winform 使用 web 的UrlEncode/UrlDecode 方法
- 详解google Chrome浏览器(理论篇)