今天编写了一个UDP传输,出现个小问题,我编写的是两个主函数那个,也就是发送端和接收端, 而且把我写运行的是接收端,为什么运行发送端后接收端没反应?收不到发送端发过来的数据是怎么回事??
还有一点就是:当我把发送端的发送的IP地址改为 192.168.1.255 就可以接受到了 这又是为什么啊? 搞不懂 谁能具体说下???
- /*UDP传输
- */
- /*发送端
- 步骤:1、建立UDP的socket服务,也就是端点
- 2、将要提供的数据封装到数据包中
- 3、通过socket服务的发送功能将数据发出
- 4、关闭资源
- */
- import java.net.*;
- class DatagramSocketSend
- {
- public static void main(String[] args) throws Exception
- {
- //创建UDP的socket服务
- DatagramSocket out = new DatagramSocket();
- //要发送的数据
- byte [] data = "UDP come to Be".getBytes();
- //建立数据包,实现无线投递服务
- DatagramPacket pack =
- new DatagramPacket(data,data.length,InetAddress.getByName("192.168.1.254"),10010);
- //通过socket服务的sent方法将数据发出
- out.send(pack);
- //关闭资源
- out.close();
- }
- }
- /*接收端
- 步骤:1、创建UDP接收端服务,并指定端口号
- 2、定义一个数据包,用来存储接收到的字节数据,
- 因为数据包对象中有更多功能可以提取字节数据中的不同数据信息
- 3、通过Socket服务的receive方法将接收到的数据存入已定义好的数据包中
- 4、使用数据包的特有功能,对这些不同的数据取出,并打印到控制台
- 5、关闭资源
- */
- class DatagramSocketReceive
- {
- public static void main(String[] args) throws Exception
- {
- //创建socket服务,并指定端口号为10000,方便测试
- DatagramSocket ds = new DatagramSocket(10010);
- //定义一个数据包,用于存储接收到的数据
- byte [] buff = new byte[1024];
- DatagramPacket pack = new DatagramPacket(buff,buff.length);
- //通过socket服务的receive方法将接收到的数据存入数据包
- ds.receive(pack); //该方法是阻塞状态
- //获取信息
- //获取发送端IP
- System.out.println(pack.getAddress().getHostAddress());
- //获取发送端端口号
- System.out.println(pack.getPort());
- //获取发送端发送的数据的长度
- System.out.println(pack.getLength());
- //获取发送端发送的数据
- System.out.println(new String(pack.getData(),0,pack.getLength()));
- }
- }
复制代码
|
|