A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王松松 高级黑马   /  2013-8-28 18:32  /  1221 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王松松 于 2013-8-28 19:22 编辑

我将IP设置为10.0.204.255,255不是广播地址么,而且我的端口和监听端口都是8888,为什么UDP接收端接收不到数据?{:soso_e103:}

求解惑。。。

4 个回复

倒序浏览
这个得看你的子网掩码啊.如果是255.255.255.0 那么你的这个ip就是广播地址 .一个ip由两部分组成 , 网络+主机部分 ,如果子网掩码就是我刚才说的.那么前三段就是网络部分 ,最后一段才是你的主机地址 .局域网是arp通信 .要获取你的mac码的 ,有点絮叨了  ...
回复 使用道具 举报
查看本机IP地址:cmd——ipconfig
代码展示:UDP 发送端
public class UDP {
        public static void main(String[] args) throws IOException {
                /*
                 * 创建UDP传输的发送端
                 * 思路:
                 * 1.建立UDP的socket服务
                 * 2.将要发送的数据封装到数据包中
                 * 3.通过UDP的socket服务将数据包发送出去
                 * 4.关闭socket服务
                 */
                //1.建立UDP的socket服务,使用DatagramSocket对象
                DatagramSocket ds=new DatagramSocket(8888);
                //8888是发送端的端口,也可以不指定,随机生成,并在接收端显示出来

                //2.将要发送的数据封装到数据包中
                String str="UDP传输演示案例";
                //使用DatagramPacket将数据封装到该对象包中
                byte[] bytes=str.getBytes();
                DatagramPacket dp=new DatagramPacket(bytes,bytes.length,
                        InetAddress.getByName("192.168.1.100"),10000);

                //3.通过UDP的socket服务将数据包发送出去,使用send方法
                ds.send(dp);
                //4.关闭资源
                ds.close();
        }
}

代码展示:UDP接收端
public class UDPRec {
        public static void main(String[] args) throws IOException {
                System.out.println("接收端启动……");
                /*
                 * 建立UDP接受端的思路
                 * 1.建立socket服务
                 * 2.创建数据包,用于存储接收到的数据。方便用数据包对象的方法解析这些数据。
                 * 3.使用socket服务的receive方法将接收的数据存储到数据包中。
                 * 4.通过数据包的方法解析数据包中的数据。
                 * 5.关闭资源
                 */
                //1.建立UDP socket服务 因为接收数据,必须明确端口号
                DatagramSocket ds=new DatagramSocket(10000);
                //2.创建数组传入数据包中
                byte[] bytes=new byte[1024];
                DatagramPacket dp=new DatagramPacket(bytes, bytes.length);
                //3.使用接收方法将数据存储到数据包中
                ds.receive(dp);//阻塞式方法

                //4.通过数据包对象的方法,解析其中的数据,比如:IP地址,端口,数据的内容
                //获取发送端的 IP地址的字符串表现形式
                String ip=dp.getAddress().getHostAddress();
                //获取发送端的端口
                int port=dp.getPort();
                //获取有效的数据
                String str=new String(dp.getData(),0,dp.getLength());
                //5.关闭socket服务
                ds.close();
                System.out.println(ip+":"+port+":"+str);
        }
}

回复 使用道具 举报
范龙波 发表于 2013-8-28 18:47
这个得看你的子网掩码啊.如果是255.255.255.0 那么你的这个ip就是广播地址 .一个ip由两部分组成 , 网络+主 ...

虽然看不懂你说的是啥,但是我用255.255.255.255可以广播了。
回复 使用道具 举报
范龙波 发表于 2013-8-28 18:47
这个得看你的子网掩码啊.如果是255.255.255.0 那么你的这个ip就是广播地址 .一个ip由两部分组成 , 网络+主 ...

网络广播地址的计算方法:

1)IP地址与子网掩码进行“与”运算,得到网络地址

2)子网掩码“取反”运算,然后与网络地址进行“或”运算,得到广播地址



回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马