一、单播——聊天室(群聊)——>多个人一起发消息,只有一个容器接收
二、注意:要先开启接收数据,再开启发送数据
三、代码
ReceiveMessageDemo.java
package com.itheima.a03udpdemo2;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class ReceiveMessageDemo {
public static void main(String[] args) throws IOException {
//接收过程:快递公司 根据地址过来——>签收包裹——>拆开包裹得到里面的数据——>快递公司离开
//1.创建DatagramSocket对象(快递公司)
//参数为程序的端口号
DatagramSocket ds = new DatagramSocket(10086);
//2.接收数据
byte[] bytes = new byte[1024];
while (true) {
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
//3.解析数据
byte[] date = dp.getData();//获取数据所在的数组
int len = dp.getLength();//数据所占的长度
//获取真正的 IP:
String ip = dp.getAddress().getHostAddress();//发送端的电脑IP地址
//获取主机名
String name = dp.getAddress().getHostAddress();
int port = dp.getPort();//端口号
//获取数据转换成字符串
System.out.println("ip为:" +ip + ",主机名为:"+name+"的人,发送了数据:"+new String(date,0,len));
}
//不知道发送端什么时候停止,不需要释放数据,直到不需要接收数据,直接停止程序就好
/*//4.释放资源
ds.close();*/
}
}
SendMessageDemo.java
package com.itheima.a03udpdemo2;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class SendMessageDemo {
public static void main(String[] args) throws IOException {
//单播:(多对一)
//发送过程:指定快递公司——>将东西打包装箱——>将快递派送——>快递公司离开
//广播:广播和单播实现过程一致,只是将接收端的电脑IP改为 255.255.255.255就可以
//需求:
//可以同时运行多个发送端程序,将接收端当作聊天室,几个人一起聊天
/*按照下面的要求实现程序
UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收*/
//分析:
//1.创建DatagramSocket对象
DatagramSocket ds = new DatagramSocket();
//2.将数据打包
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入要说的话:");
String str = sc.nextLine();
if("886".equals(str)){
break;
}
byte [] bytes = str.getBytes();
//确定接收端的电脑IP
//单播
InetAddress address = InetAddress.getByName("127.0.0.1");
//广播
//InetAddress address = InetAddress.getByName("255.255.255.255");
//要经过的端口号
int port = 10086;
//开始传递
DatagramPacket dp = new DatagramPacket(bytes,bytes.length,address,port);
//3.发送数据
ds.send(dp);
}
//4.释放资源
ds.close();
}
}
四、应用场景——聊天室配置
1.先创建接收数据和发送数据的java文件
2.在发送文件中进行配置
3.开始配置:先点击配置选项进入下一步
4.选择允许多个实例
5.应用+确定
6.这样就得到一个聊天室了