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 程序就可以了.这种开发模式背后的过程是:开发人员编写的 ...
随机推荐
- New Begin--工作一年所思所感小记
有段日子没有更新Blog了,这段时间过得有些散漫,今天看完了两本书,感触颇多,让我繁杂的心绪又重归平静,想写一些什么,遂有了这篇文章. 所谓的一年是从13年7月9日我正是入职算起,到现在为止一年有余, ...
- SOLID rule in JAVA design.
Classes are the building blocks of your java application. If these blocks are not strong, your build ...
- MariaDB 10.1配置
[mysqld]datadir=C:/Program Files/MariaDB 10.1/dataport=3306sql_mode="STRICT_TRANS_TABLES,NO_ENG ...
- Java Docs
1 Java Docs on Oracle: 1.1 Online(EN): JavaSE6 http://docs.oracle.com/javase/6/docs/api/index.htm ...
- LPC2478_调试心得(转)
1.在调试“E:\htwang\smart2200v201\ARM嵌入式系统实验教程(二)\开发板出厂编程程序\液晶显示程序\LCM_Disp”的程序时,想使用外部RAM进行仿真调试,在将ADS1.2 ...
- 静态static
静态使用注意: 1.静态方法只能访问静态成员(方法和变量).非静态方法既可以访问静态也可以访问非静态. 2.静态方法中可以定义this,super关键字.因为静态优先于对象存在. 3. 主函数是静态的 ...
- Android常用控件及对应Robotium API
最近发现Android控件不熟悉,看Robotium的API都费劲. 常用Android控件: 控件类型 描述 相关类 Button 按钮,可以被用户按下或点击,以执行⼀个动作 Button Text ...
- 腾讯云Centos下Nginx反向代理Apache+Tomcat
1. 安装Apahce, PHP, MySQL以及php连接mysql库的组件#yum -y install httpd php mysql mysql-server php-mysql // ...
- cakephp 打印出SQL语句
最近一直在使用cakephp这个框架学习,最近发现了一些问题,就是怎样将SQL语句打印出来进行调试,方法如下: $db=ConnectionManager::getDataSource('defaul ...
- Google Protocol Buffer 的使用
简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...