黑马程序员技术交流社区
标题: UDP广播的问题 [打印本页]
作者: 王松松 时间: 2013-8-28 18:32
标题: UDP广播的问题
本帖最后由 王松松 于 2013-8-28 19:22 编辑
我将IP设置为10.0.204.255,255不是广播地址么,而且我的端口和监听端口都是8888,为什么UDP接收端接收不到数据?{:soso_e103:}
求解惑。。。
作者: 范龙波 时间: 2013-8-28 18:47
这个得看你的子网掩码啊.如果是255.255.255.0 那么你的这个ip就是广播地址 .一个ip由两部分组成 , 网络+主机部分 ,如果子网掩码就是我刚才说的.那么前三段就是网络部分 ,最后一段才是你的主机地址 .局域网是arp通信 .要获取你的mac码的 ,有点絮叨了 ...
作者: 月黑风高 时间: 2013-8-28 18:50
查看本机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:55
虽然看不懂你说的是啥,但是我用255.255.255.255可以广播了。
作者: 王松松 时间: 2013-8-28 19:20
网络广播地址的计算方法:
1)IP地址与子网掩码进行“与”运算,得到网络地址
2)子网掩码“取反”运算,然后与网络地址进行“或”运算,得到广播地址
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |