java如何实现UDP远程监听获取数据

发布于 2021-11-23 16:22:36 字数 745 浏览 870 评论 12

我想通过一台机器去监听另一台机器的UDP端口获取数据,  下面这种方式 能监听 就是接受不到数据
DatagramSocket ds = null;
		DataOutputStream dos = null;
		try {
			dos = new DataOutputStream(new FileOutputStream("d:\temp\test.zip"));
			ds = new DatagramSocket();
		    //ds.bind(new InetSocketAddress("192.168.1.81",9090));
			ds.connect(InetAddress.getByName("192.168.1.101"),8888);
			ds.setSoTimeout(12*1000);
			byte[] buf = new byte[61440];
			DatagramPacket dp = new DatagramPacket(buf, buf.length);
			while (true) {
				ds.receive(dp);
				dos.write(buf, 0, dp.getData().length);
				dos.flush();
			}
		} catch (Exception e) {
			e.printStackTrace();
			dos.close();
			ds.close();
		}


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(12

柠檬 2021-11-26 11:17:59

只要传输的字节不大于63355就不会丢包,最好还是设置小一些

离去的眼神 2021-11-26 11:09:28

丢包问题怎么解决

裸钻 2021-11-26 11:01:34

远程监听不了,只可能监听本地的端口,有一种方式是通过广播的方式可以实现远程监听

策马西风 2021-11-26 11:00:23

回复
UDP单播不管用什么方式都无法实现远程监听?

多情癖 2021-11-26 10:57:38

回复
我要把数据从固定服务器传到客户端,两个不在同一个网段中,一个是外网,一个是局域网,这用广播不行吧?

左岸枫 2021-11-26 10:52:37

你好,我也遇到这个问题了,请问你是这么解决的,谢谢!

成熟的代价 2021-11-26 08:39:16

没有异常

泛滥成性 2021-11-26 07:01:26

有没有异常?有的话请将完整异常堆栈贴出来

风透绣罗衣 2021-11-26 05:53:09

怎么解答的人这么少啊   

醉酒的小男人 2021-11-26 01:31:38
 DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream("e:\\jdk1.6.zip")));
           DatagramSocket ds = new DatagramSocket();
           byte[] buf = new byte[61440];
           int read = 0;
           int i = 0;
           long a = new Date().getTime();
           while(true){
        	   if(dis!=null){
        		  read = dis.read(buf);
        		  System.out.println("read--------------"+read);
        	   }
        	   System.out.println(i++);
        	   if(read==-1){
        		   System.out.println(new Date().getTime()-a);
        		   break;
        	   }
        	   DatagramPacket dp = new DatagramPacket(buf, buf.length,new InetSocketAddress("192.168.1.101",8888));
        	   ds.send(dp);
        	  TimeUnit.MICROSECONDS.sleep(500);
           }
           System.out.println("文件传输完成.....");
           dis.close();
           ds.close();
	}

凡尘雨 2021-11-25 13:48:47

通过本地监听可以获得发送的数据 ,不会是发送端的问题

哑剧 2021-11-25 13:39:09

另外一端“发送”的监控信息呢?这里只有“接受”一方的信息啊,也可能是“发送”那方的问题。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文