日期:2014-05-20  浏览次数:20817 次

java udp连接
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();
            
        }
        
    }

我怎么接受不到任何信息,是Ip的问题吗?

------解决方案--------------------
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了。
------解决方案--------------------
我也测试了,木有问题