62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import javax.imageio.ImageIO;
import javax.imageio.stream.FileImageInputStream;
public class UDpserver {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(5000);
byte[] b = new byte[100];
DatagramPacket receivePacket = new DatagramPacket(b,b.length);
socket.receive(receivePacket);
if(0!=receivePacket.getLength()){ //检测到有信息发过来就向客户端发送一张图片
File file = new File("E:/123.png");
FileImageInputStream fiis =
new FileImageInputStream(file);
BufferedImage image=ImageIO.read(fiis);//获取图像
ByteArrayOutputStream buf=
new ByteArrayOutputStream((int)file.length());
ImageIO.write(image,"jpg",buf);
byte[] b1 =buf.toByteArray();
DatagramPacket sendPacket =new DatagramPacket(b1,(int)file.length(),
receivePacket.getAddress(),receivePacket.getPort());
socket.send(sendPacket);
socket.close();
}
}
}
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Dimension;
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.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Udpclient implements ActionListener{
JButton btn;
JPanel jp;
MyCanvas1 cav = new MyCanvas1();
BufferedImage image;
public Udpclient(){
JFrame jf= new JFrame("I am a client");
btn = new JButton("获取图像");
jp= new JPanel();
jf.add(btn,BorderLayout.NORTH);
btn.setSize(250,30);
btn.addActionListener(this);
cav.setPreferredSize(new Dimension(250,250));
jp.add(cav);
jf.add(jp,BorderLayout.SOUTH);
jf.pack();
jf.setVisible(true);
}
class MyCanvas1 extends Canvas{
public void paint(Graphics g){
g.drawImage(image,0,0,this);
}
}
public void actionPerformed(ActionEvent e){
try{
DatagramSocket socket = new DatagramSocket();
String str="请求图片";
DatagramPacket sendPacket = new DatagramPacket
(str.getBytes(),str.length(),
InetAddress.getByName("localhost"),5000);
socket.send(sendPacket);
byte[] image1 = new byte[5000];
DatagramPacket receivePacket =new DatagramPacket(image1,5000);
socket.receive(receivePacket);
ByteArrayInputStream bais = new ByteArrayInputStream
(image1,0,receivePacket.getLength());
BufferedImage bi = ImageIO.read(bais);
image = bi;
cav.repaint();
socket.receive(receivePacket);
socket.close();
}catch(Exception en){
en.printStackTrace();
}
}
public static void main(String[] args) {
new Udpclient();
}
}