目录
- 聊天
- 文件传输
UDP(user datagram protocol)是一个用户数据包传输协议(无连接服务)
UDP:效率高,但是不安全,容易数据丢失
- 单播:一对一;(比如发送邮件)
- 组播:多对多;
- 广播:一对多;(一个老师教多个学生)
首先首页代码要先放在try_catch里
聊天格式:
-
创建接收端和发送端
DatagramSocket ds=new DatagramSocket(3838); -
准备数据
String str=" 老王"; -
定义字节数组来接收信息
byte[] bs = new byte[60]; -
通过发送端对象调用发送内容的方法即可
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.getBytes().length,
InetAddress.getByName(“127.0.0.1”),3838);发送的内容:str.getBytes()
获取内容的大小:str.getBytes().length
发送指定的接收端(IP地址): InetAddress.getByName(“127.0.0.1”)
端口号:3838 -
开始接收
ds.receive(dp);//接收
ds.send(dp);//发送
ds.close();//关闭流
文件传输格式:
-
创建接受端&&发送端
DatagramSocket ds = new DatagramSocket(8989); -
准备数据和定义保存的文件路径
File file = new File(“C:\图片\72df87e169ee5328442d4804a60de484.png”);
File file = new File(“C:\图片2.png”);//保存的文件路径 -
定义字节数组和接受的字节数组
byte[] bs = new byte[10];
byte[] bs = new byte[20];//接受的字节数组 -
创建数据报对象
DatagramPacket dp = null; -
定义字节写入流
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos); -
开始发送
while ((bis.read(bs)) != -1) {
// 开始创建数据包
dp = new DatagramPacket(bs, bs.length, InetAddress.getByName(“127.0.0.1”), 3838);
// 开始发送
ds.send(dp);
}
System.out.println(“发送完成”);//当代码能运行到这里就输出 -
开始接受
while (true) {
// 创建接受的数据包
dp = new DatagramPacket(bs, bs.length);
// 开始接受
ds.receive(dp);
// 把每次接受的字杰数组转换成字符串
String str = new String(bs);
if (str.contains(“拜拜”)) {
break;
}
// 保存到本地
bos.write(bs);
bos.flush();
}
//然后关闭流
ds.close();
bos.close();
System.out.println(“接收完成”);//当代码能运行到这里就输出