毕老师不是说网络通讯发广播所有人都收的到吗?怎么我的出问题呢?只有后面指定的端口可以接收?- public class UDPSend1{
- public static void main(String[] args) throws Exception {
- //1.创建UDP服务,通过DatagramSocket()对象
- DatagramSocket ds = new DatagramSocket();
-
- //2.确定数据,并封装数据包
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String line = null;
- while ((line=br.readLine()) != null) {
- if("886".equals(line))
- break;
- byte[] buf = line.getBytes();
- DatagramPacket dp =
- new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.1.255"),10002);
-
- //3.通过Socket服务的发送功能,将数据包发过去
- ds.send(dp);
- }
- // 4.关闭资源
- ds.close();
- }
- }
复制代码 下面1002可以接收信息- class UDPReceive1 {
- public static void main(String[] args) throws Exception {
- //1.创建UDPSocket服务,建立端点
- DatagramSocket ds = new DatagramSocket(10002);
- while(true){
- //2.定义数据包,用于存储数据
- byte[] buf = new byte[1024];
- DatagramPacket dp = new DatagramPacket(buf, buf.length);
- //3.通过Socket服务的receive方法将收到的数据存入数据包中。
- ds.receive(dp);
- //4.通过数据包的方法获取其中的数据
- String ip = dp.getAddress().getHostAddress();
- String date = new String(dp.getData(),0,dp.getLength());
- int port = dp.getPort();
- System.out.println(ip+"::"+date+"::"+port);
- }
- }
- }
复制代码 这个10001端口就没信息- class UDPReceive2 {
- public static void main(String[] args) throws Exception {
- //1.创建UDPSocket服务,建立端点
- DatagramSocket ds = new DatagramSocket(10001);
- while(true){
- //2.定义数据包,用于存储数据
- byte[] buf = new byte[1024];
- DatagramPacket dp = new DatagramPacket(buf, buf.length);
- //3.通过Socket服务的receive方法将收到的数据存入数据包中。
- ds.receive(dp);
- //4.通过数据包的方法获取其中的数据
- String ip = dp.getAddress().getHostAddress();
- String date = new String(dp.getData(),0,dp.getLength());
- int port = dp.getPort();
- System.out.println(ip+"::"+date+"::"+port);
- }
- }
- }
复制代码 |