基于UDP的简单文字发送可以参考:UDP通信基础(java)
文章目录
思路
1、构建界面,分左界面和右界面。
2、左界面实现文字传输;右界面实现视频传输
-
文字传输基于JTextArea的文本框以及JButton的按钮
-
视频传输基于BufferedImage图片以及wecom摄像头
import com.github.sarxos.webcam.Webcam; import com.github.sarxos.webcam.WebcamResolution;下载地址:sarxos.webcam的包
-
发送基于UDP,将数据转成Byte[]类型发送,第一字节byte[0]代表数据类型(文本or图片)
-
接收基于UDP,接收Byte[]类型的数据,并进行处理,显示到界面上
实现
一、结构
-
变量
界面、端口等
-
初始化函数
- 界面初始化
- 发送端socket初始化
- 发送视频界面初始化
- 接收数据初始化
-
处理发送数据的函数
-
处理接收数据的函数
二、具体代码
库类
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.net.SocketException;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import com.github.sarxos.webcam.Webcam;
import com.github.sarxos.webcam.WebcamResolution;
全局变量
//按钮需要监听器,就让我们的这个对象继承这个功能,方便使用
public class QQ implements ActionListener{
/*
由于之后的函数要调用这些成员
为了方便将它们放在全局变量中
*/
Graphics g;
JTextArea log;
JTextField input;
/*
端口的创建
由于是双机通信的接收&发送信息,所以创建2种端口
发送的端口recvSocket & 接收的端口sendSocket
端口号地址有2个:
自己的端口号地址 destAdd
对方的端口号地址 localAddr
*/
private DatagramSocket recvSocket;
private DatagramSocket sendSocket;
private SocketAddress localAddr = new InetSocketAddress("192.168.31.136",9000);
private SocketAddress destAdd = new InetSocketAddress("192.168.31.235", 8000);
}
初始化函数initUI()
public void initUI() {
/*
创建JFrame
以及左右2个界面JPanel
*/
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(3);
jf.setSize(800, 500);
JPanel rightPanel = new JPanel();
rightPanel.setPreferredSize(new Dimension(400, 0));
JPanel leftPanel = new JPanel();
//将2个界面加入布局
jf.add(rightPanel, BorderLayout.EAST);
jf.add(leftPanel, BorderLayout.CENTER);
leftPanel.setLayout(new FlowLayout());
log = new JTextArea(10,30);
leftPanel.add(log);
input = new JTextField(30);
leftPanel.add(input);
JButton btn = new JButton("Send");
leftPanel.add(btn);
btn.addActionListener(this);
jf.

该博客介绍了如何使用Java基于UDP协议实现视频传输。首先,博主提出构建分左右两部分的界面,左边用于文字传输,右边用于视频传输。文字传输通过JTextArea和JButton实现,而视频传输则利用BufferedImage和摄像头。博主推荐了saxos.webcam库,并详细阐述了数据发送和接收的流程,包括数据类型标识、发送端和接收端的初始化、处理数据的函数等。
最低0.47元/天 解锁文章
1313

被折叠的 条评论
为什么被折叠?



