- Java code
package UdpDemo;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class UdpDemo { /** * @param args */ public static void main(String[] args) { try { DatagramSocket ds=new DatagramSocket(); byte[] buf="this is demo".getBytes(); try { DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),10000); try { System.out.println("开始发送...."); ds.send(dp); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }System.out.println("关闭资源"); ds.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } }}
- Java code
package UdpDemo;import java.net.DatagramPacket;import java.net.DatagramSocket; public class UpRece{ public static void main(String[] args) throws Exception{ // 创建端点 DatagramSocket ds=new DatagramSocket(10000); //定义数据包 存储数据 byte[] buffer=new byte[1024]; DatagramPacket dp=new DatagramPacket(buffer, buffer.length); System.out.println("开始接收"); ds.receive(dp); System.out.println("开始分类获取"); String ip=dp.getAddress().getHostAddress(); String Data=new String(dp.getData(),0, dp.getLength()); int port=dp.getPort(); System.out.println(ip+":"+Data+"::"+port); ds.close(); } }
------解决方案--------------------
DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1")
这段代码的目标地址不对,广播的目标地址应该是 255.255.255.255或192.168.1.255(192.168.1 网段 内),你把127.0.0.1改成255.255.255.255应该就可以了
------解决方案--------------------
楼主,你的程序是可以接受到信息的,我测了下没有问题,你看到的是服务器端的结果,应该切换到客户端看结果,eclipse控制台那边有个小电视,你切换看看,应该就ok了。
------解决方案--------------------
我也测试了,木有问题