java--UDP屏幕广播代码
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屏幕广播代码的更多相关文章
- java通过控制鼠标实现屏幕广播
在java实现屏幕共享的小程序中提到截取屏幕时是没鼠标,为了看到教师端界面上的鼠标,可以在截取屏幕的时候,把鼠标绘制到每一张截图上去,但是由于截图的时候是一张张截取的,所以看到的鼠标难免会有点卡,之前 ...
- java udp 广播
原文链接: http://blog.csdn.net/yudajun/article/details/8477149 udp 是一种网络通信协议,不需要客户端和服务器端建立连接即可进行通讯功能.相对于 ...
- Android 广播代码的发送与接收
Android四大组件之一广播,使用的也比较多,广播可大致分为两种,一种是Android系统区域的广播,是由系统指令发出,例如:点亮屏幕广播,开机过程中的一些广播 省略-, 然而还有一种广播就是我们自 ...
- Python实现局域网内屏幕广播的技术要点分析(转载)
转载:https://mp.weixin.qq.com/s?timestamp=1498531736&src=3&ver=1&signature=Eq6DPvkuGJi*G5s ...
- Java UDP网络编程 - 最简单示例
UDP也是网络通讯中的一个重要协议,与TCP区别可参见浅谈TCP/IP 和 UDP的区别,本文就对Java UDP通讯做一个简单例子介绍 服务端: package wyf; import java.i ...
- java udp (使用类调用双通信)1
项目需要就使用了UDP通信,做了java的双方通信,其实代码还是来自之前的udp学习代码,自己加了注释,并且优化的使用类来封装关于通信类库的使用代码 目的是为了在安卓项目中使用时,可以通过实例化,调用 ...
- uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码
项目介绍 二次开发 uiautomatorviewer 优化定位符生成,支持生成Java,Python自动化代码,修复自带工具画面有动态加载时截图失败问题,优化自带工具截图速度 ,实现类似录制脚本功能 ...
- java实现屏幕截屏功能
最近在项目中遇到这样一个需求,用户生成推广海报想要发送给朋友,但是推广海报是用html网页写的,这时候想要分享给朋友的话只能用户自己手机截图,显然这样的用户体验是不友好的,如果可以给用户一个按钮实现一 ...
- (转载)JAVA动态编译--字节代码的操纵
在一般的Java应用开发过程中,开发人员使用Java的方式比较简单.打开惯用的IDE,编写Java源代码,再利用IDE提供的功能直接运行Java 程序就可以了.这种开发模式背后的过程是:开发人员编写的 ...
随机推荐
- iOS开发之CocoaPods的使用
你开发iOS的方式还是石器时代吗?在这个世界上并不是所有的软件开发人员都是码农.在这个世界上有很多的geek存在他们为这个语言的发展做出了很大的贡献.现在随着iOS开发者的曾多也就出现了iOS程序猿提 ...
- 关于Unity游戏开发方向找工作方面的一些个人看法
这是个老生常谈,却又是谁绕不过去的话题,而对于每个人来说,所遇到的情况又不尽相同,别人的求职方式和路线不一定适合你,即使是背景很相似的两个人,有时候机遇也很重要. 我本人的工作经验只有一年,就业方式 ...
- excel导出字符串
"style", "vnd.ms-excel.numberformat: @;"
- SQL Server 2008通过LinkServer连接MySQL
链接过程就不过多描述了,搜索下都有一大堆的内容. 链接成功以后,如何调用的问题,通过“编写select脚本”的方式生成的脚本如下: [备注:asset_manager是数据库名,admin是表名] - ...
- 一次Oracle 11g+FluentNHibernate AutoMapping组合尝试
本文的上下文环境 操作系统:Win7 x64 Ultimate开发工具:Visual Studio 2013 一.前言 在以前开发的大多数场景下,使用的开发语言是C#,使用的数据库是Sql Serve ...
- C#TreeView控件遍历文件夹下所有子文件夹以及文件
一直对递归的理解不深刻,有时候觉得很简单,可是用起来总会出错.这里需要在TreeView控件里显示一个文件夹下的所有目录以及文件,毫无意外的需要用到递归. 一开始,想到用递归写一个生成每一个节点(Tr ...
- ASP.NET权限管理
ASP.NET Web Forms权限管理: 我要将一个文件夹只能让一个用户组访问怎么办? 可否在网站根目录下的web.config里这样设置: <location path="adm ...
- O2O迈进智能时代 百度构建“服务生态”
经历过山车式资本市场后,O2O领域正努力摆脱“低门槛”,或将迎来技术创新之争.在刚刚落幕的百度世界大会上,百度副总裁.百度糯米总经理曾良宣布:将以百度糯米.手机百度和百度地图为核心构建百度服务生态.在 ...
- NRF51822之IIC(MEMS_LIS2DH12)
在上篇介绍了OLED的II以写操作为主,没有进行读取操作.所以在现再补充读取的操作. 我在此以LIS2DH为例子 uint8_t temp; lis2dh_read_registers(LIS2DH_ ...
- Openwebrtc
https://github.com/EricssonResearch ============================= webrtc系列不错的博客 http://blog.csdn.net ...