UDP传送图片,有点小问题怎么解决下。

zly361814478 2012-10-22 07:58:52
服务器端:
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();
}
}

貌似 没传送过来就关闭了
...全文
188 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zly361814478 2012-10-25
  • 打赏
  • 举报
回复
没人来哦~~~
开启时代 2012-10-23
  • 打赏
  • 举报
回复
这个真心不懂 。。。围观吧
zly361814478 2012-10-23
  • 打赏
  • 举报
回复
没人啊·····

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧