Java UDP协议定向发送数据

本文介绍了一个使用Java实现的UDP网络通信示例,包括发送端和接收端的代码。发送端循环向局域网内的不同地址广播固定消息,而接收端则监听特定端口并打印接收到的数据。
try {
			final String ip = "192.168.1.1";
			final int port = 9581;
			new Thread(new Runnable() {
				@Override
				public void run() {
					try {
				
						DatagramSocket datagramSocket = new DatagramSocket(port);
			
						while (true) {
							byte[] bytes = new byte[1024];
							DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);				
							datagramSocket.receive(datagramPacket);						
							String result = new String(bytes);
							System.out.println(result);
							if (result.equals("close")) {
								break;
							}
						}
						datagramSocket.close();
					} catch (Exception e) {
						e.printStackTrace();
					}
				}
			}).start();
			DatagramSocket datagramSocket = new DatagramSocket();
			Scanner sn = new Scanner(System.in);
			while (true) {
				String content = sn.nextLine();
				if(content.startsWith("exit"))System.exit(0);
				byte[] bytes = content.getBytes();
				DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(ip),port);
				datagramSocket.send(datagramPacket);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

 

发送端

 try{
            DatagramSocket datagramSocket=new DatagramSocket();
            Scanner sn=new Scanner(System.in);
            while(true){
                String str="我啥都会";
                if(str.equals("0")){
                    break;
                }
                byte[] bb=str.getBytes();
                for(int i=1;i<255;i++){
                    DatagramPacket datagramPacket=new DatagramPacket(bb, bb.length,InetAddress.getByName("192.168.113."+i),9999);
                    datagramSocket.send(datagramPacket);
                    //System.out.println("发送完毕");
                }

            }
            datagramSocket.close();
        }catch ( Exception e){
            e.printStackTrace();
        }

接收端

try{
            DatagramSocket datagramSocket = new DatagramSocket(9999);
            byte[] bb=new byte[1024];
            int count=1;
            while(true) {
                DatagramPacket datagramPacket = new DatagramPacket(bb, bb.length);
                datagramSocket.receive(datagramPacket);
                if(datagramPacket.getAddress().toString().equals("/192.168.113.83")||datagramPacket.getAddress().toString().equals("/192.168.113.54"))continue;
                String result = new String(datagramPacket.getData());
                if(result.equals("0")){
                    break;
                }
                System.out.println( count+"接收消息:"+result +"\n"+datagramPacket.getAddress());
                count++;
            }
            datagramSocket.close();
        }catch (Exception e){}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值