1.发送端的代码

这里广播的地址只写了一个

 package com.udp.broadcast;

 import java.awt.Robot;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.zip.GZIPInputStream; import javax.imageio.ImageIO; import java.awt.AWTException;
import java.awt.Rectangle; public class ScreenBroadcastDemo { public static void main(String[] args) throws Exception {
DatagramSocket sendSocket = new DatagramSocket(8888);
Rectangle screenRect = null;
BufferedImage bufImage = null;
ByteArrayOutputStream baos = null;
int i = 0;
while(true){
screenRect = new Rectangle(0, 0, 300, 400);
bufImage = new Robot().createScreenCapture(screenRect);
baos = new ByteArrayOutputStream();
ImageIO.write(bufImage, "jpg", baos);
byte[] byteData = baos.toByteArray();
DatagramPacket dataPack = new DatagramPacket(byteData, byteData.length);
InetAddress iaddr = InetAddress.getByName("localhost");
dataPack.setAddress(iaddr);
dataPack.setPort(8889);
sendSocket.send(dataPack);
i++;
System.out.println("广播次数" + i);
} } }

2. 接收端的代码

2.1 startClient

 package com.udp.receiver;

 public class SartClient {

     public static void main(String[] args) {
ClientUI clientUI = new ClientUI();
new ClientReceiverThread(clientUI).start();
} }

2.2ClientUI

 package com.udp.receiver;

 import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea; import com.sun.javafx.sg.prism.web.NGWebView;
import com.sun.org.apache.bcel.internal.generic.IndexedInstruction; public class ClientUI extends JFrame {
private JLabel label;
private ImageIcon imageIcon;
public ClientUI(){
InitUI(); }
/*
*窗口初始化
*/
public void InitUI(){
this.setLayout(null);
this.setVisible(true);
this.setBounds(0, 0, 500, 600);
label = new JLabel();
label.setBounds(0, 0, 300, 400);
this.add(label); //窗口关闭时,程序退出。两种方法都可以
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e ) {
System.exit(-1);
}
});
}
public void refreshUI(ImageIcon icon){
label.setIcon(icon);
this.add(label);
} }

2.3ClientReceiverThread

 package com.udp.receiver;

 import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException; import javax.imageio.ImageIO;
import javax.print.attribute.standard.PrinterMessageFromOperator;
import javax.swing.ImageIcon; public class ClientReceiverThread extends Thread {
private ClientUI ui;
public ClientReceiverThread(ClientUI ui){
this.ui = ui;
}
public void run(){
byte[] buf = new byte[1024 * 60];
DatagramSocket recvSocket = null;
byte[] byteRecvData = null;
ByteArrayInputStream bais = null;
BufferedImage bufImageRecv = null;
ImageIcon ImageIcon = null;
DatagramPacket dataPack = new DatagramPacket(buf, buf.length);
try {
recvSocket = new DatagramSocket(8889);
while(true){
recvSocket.receive(dataPack);
byteRecvData = dataPack.getData();
bais = new ByteArrayInputStream(byteRecvData);
bufImageRecv = ImageIO.read(bais);
ImageIcon = new ImageIcon(bufImageRecv, "Screen");
ui.refreshUI(ImageIcon);
Thread.sleep(10);
}
} catch (Exception e) {
e.printStackTrace();
} } }

java--UDP屏幕广播代码的更多相关文章

  1. java通过控制鼠标实现屏幕广播

    在java实现屏幕共享的小程序中提到截取屏幕时是没鼠标,为了看到教师端界面上的鼠标,可以在截取屏幕的时候,把鼠标绘制到每一张截图上去,但是由于截图的时候是一张张截取的,所以看到的鼠标难免会有点卡,之前 ...

  2. java udp 广播

    原文链接: http://blog.csdn.net/yudajun/article/details/8477149 udp 是一种网络通信协议,不需要客户端和服务器端建立连接即可进行通讯功能.相对于 ...

  3. Android 广播代码的发送与接收

    Android四大组件之一广播,使用的也比较多,广播可大致分为两种,一种是Android系统区域的广播,是由系统指令发出,例如:点亮屏幕广播,开机过程中的一些广播 省略-, 然而还有一种广播就是我们自 ...

  4. Python实现局域网内屏幕广播的技术要点分析(转载)

    转载:https://mp.weixin.qq.com/s?timestamp=1498531736&src=3&ver=1&signature=Eq6DPvkuGJi*G5s ...

  5. Java UDP网络编程 - 最简单示例

    UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...

  6. java udp (使用类调用双通信)1

    项目需要就使用了UDP通信,做了java的双方通信,其实代码还是来自之前的udp学习代码,自己加了注释,并且优化的使用类来封装关于通信类库的使用代码 目的是为了在安卓项目中使用时,可以通过实例化,调用 ...

  7. uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码

    项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能 ...

  8. java实现屏幕截屏功能

    最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用html网页写的,这时候想要分享给朋友的话只能用户自己手机截图,显然这样的用户体验是不友好的,如果可以给用户一个按钮实现一 ...

  9. (转载)JAVA动态编译--字节代码的操纵

    在一般的Java应用开发过程中,开发人员使用Java的方式比较简单.打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了.这种开发模式背后的过程是:开发人员编写的 ...

随机推荐

  1. php服务生成exe附件下载

    <?php $realname = "zhuast.exe"; //原始文件名 $filename = "中文 文件名.exe"; //下载到浏览器的文件 ...

  2. TFS 自动同步Server 端文件的批处理命令

    TFS 自动同步Server 端文件的批处理命令 目前在我们组的工作中很多时候需要将TFS上Server端的代码自动无人值守的同步到本地中来, 找到了一些解决方案的资料http://bbs.scmro ...

  3. Java 之ThreadLocal 对应C#之ThreadStatic

    java: public class JForumExecutionContext { private static ThreadLocal userData = new ThreadLocal(); ...

  4. STL set使用例子

    #include<iostream>#include<set>using namespace std; #include<stdlib.h> #define ran ...

  5. 批量Clip

    没有建立对应dataset,直接生成featureclass,主要是工作中没几个dataset. # -*- coding: utf-8 -*-__author__ = 'tanshuai' impo ...

  6. 【练习】数据移动---导出(EXPDP)

    1.导出表: [oracle@host03 datadump]$ expdp scott/tiger directory=dir_dp dumpfile=emp.dmp tables=emp; Exp ...

  7. [转]DevExpress.XtraGrid.GridControl gridView自动列宽代码

    gridView1.OptionsView.ColumnAutoWidth = false;   for (int I = 0; I < gridView1.Columns.Count; I++ ...

  8. Python全栈开发 线程和进程

    一.线程 线程是程序工作的最小单元,由进程生成,生成的线程间会共享内存空间.Python中创建线程比较简单,导入threading模块,创建线程实例.下面这段代码是一个简单的多线程例子 import ...

  9. PostgreSQL笔记

    本文针对目前最新版9.5.1,若非说明,文中所说文档即指官方文档.本人刚接触PostgreSQL不久,文中不免错漏,请大家指正:随着了解深入,本文[可能]会不定期更新补足. JSON PostgreS ...

  10. MacBook Pro/Air 下使用 linux ubuntu 系统 波浪号“~”变成其他 符号 的完美解决办法

    打开终端,输入: sudo su - > /sys/module/hid_apple/parameters/iso_layout sudo su -需要root权限,所以使用前请注意已下载roo ...