JAVA UDP 图像传输实例
2007-04-18 10:19
561 查看
前言: UDP 方式传递数据分两个步骤 ,第一步 构建UDP 数据包 ,第二步 创建 UDP SOCKET
发送数据的时候: 构建UDP 数据包 需要写好 目的 IP 地址,以及目的主机的端口号
DatagramPacket data=new DatagramPacket(b,b.length,address,7000);
发送数据包 创建 SOCKET 可以不用指定端口号
DatagramSocket mailSend=new DatagramSocket();
接收数据的时候: 创建UDP 数据包不需要写IP 地址和端口号
pack=new DatagramPacket(b,b.length);
接收数据包时,创建SOCKET必须写端口号
mailReceive=new DatagramSocket(7000);
本例子是通过UDP 方式,从服务器端发送一幅图到客户端,客户端显示出来
编译后运行 java Server ,然后再开一个cmd 窗口 运行 java Client 。点击client 窗口的get picture 就可以了
注意 图片文件 a.jpg 需要和编译好的类放在一起。
/** *//**
* @(#)Server.java
*
* Server application
*
* @author
* @version 1.00 2007/4/16
*/
import java.net.*;
import java.io.*;
public class Server ...{
public static void main(String[] args) ...{
DatagramPacket pack=null;
DatagramSocket mailReceive=null;
ServerThread thread;
byte b[]=new byte[8192];
InetAddress address=null;
System.out.println("server is running");
pack=new DatagramPacket(b,b.length);
try ...{
mailReceive=new DatagramSocket(7000);
System.out.println("socket build");
}
catch(IOException e)
...{
e.printStackTrace();
}
while(true)...{
try ...{
mailReceive.receive(pack);
address=pack.getAddress();
System.out.println("get client address:"+address);
}
catch(IOException e)...{
System.out.println("error is here");
}
if(address!=null)
...{
System.out.println("get address");
new ServerThread(address).start();
}
else
...{
System.out.println("can't get address");
continue;
}
}
}
}
class ServerThread extends Thread
...{
InetAddress address;
DataOutputStream out=null;
DataInputStream in=null;
String s=null;
ServerThread(InetAddress address)
...{
this.address=address;
}
public void run()
...{
FileInputStream in;
byte b[]=new byte[8192];
try ...{
in=new FileInputStream("a.jpg");
int n=-1;
while((n=in.read(b))!=-1)
...{
DatagramPacket data=new<
1293c
span style="color:rgb(0,0,0);"> DatagramPacket(b,b.length,address,5678);
DatagramSocket mailSend=new DatagramSocket();
mailSend.send(data);
System.out.println("read image");
}
in.close();
byte end[]="end".getBytes();
DatagramPacket data=new DatagramPacket(end,end.length,address,5678);
DatagramSocket mailSend=new DatagramSocket();
mailSend.send(data);
System.out.println("send all image data ok");
}
catch(Exception e)...{
e.printStackTrace();
}
}
}
/** *//**
* @(#)Client.java
*
*
* @author pkgold1
* @version 1.00 2007/4/16
*/
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Client extends Frame implements Runnable, ActionListener ...{
Button b=new Button("get picture");
ImageCanvas canvas;
public Client() ...{
super("I am a client");
setSize(600,600);
setVisible(true);
b.addActionListener(this);
add(b,BorderLayout.NORTH);
canvas=new ImageCanvas();
add(canvas,BorderLayout.CENTER);
Thread thread=new Thread(this);
validate();
addWindowListener(new WindowAdapter()
...{
public void windowClosing(WindowEvent e)...{
System.exit(0);
}
});
thread.start();
}
public void actionPerformed(ActionEvent event)...{
byte b[]="please send picture".trim().getBytes();
try...{
InetAddress address=InetAddress.getByName("localhost");
DatagramPacket data=new DatagramPacket(b,b.length,address,7000);
DatagramSocket mailSend=new DatagramSocket();
mailSend.send(data);
System.out.println("client send data");
}
catch(Exception e)...{
e.printStackTrace();
}
}
public void run()
...{
DatagramPacket pack=null;
DatagramSocket mailReceive=null;
byte b[]=new byte[8192];
ByteArrayOutputStream out=new ByteArrayOutputStream();
try ...{
pack=new DatagramPacket(b,b.length);
mailReceive=new DatagramSocket(5678);
System.out.println("reay receive data");
}
catch(Exception e)...{
e.printStackTrace();
}
try ...{
while(true)...{
mailReceive.receive(pack);
String message=new String(pack.getData(),0,pack.getLength());
if(message.startsWith("end"))
...{
System.out.println("get all data ok");
break;
}
out.write(pack.getData(),0,pack.getLength());
System.out.println("I am getting data");
}
byte imagebyte[]=out.toByteArray();
out.close();
Toolkit tool=getToolkit();
Image image=tool.createImage(imagebyte);
canvas.setImage(image);
System.out.println("paint image");
canvas.repaint();
validate();
}
catch(IOException e)...{
e.printStackTrace();
}
}
public static void main(String args[])
...{
new Client();
}
}
import java.awt.*;
import java.awt.event.*;
class ImageCanvas extends Canvas
...{
Image image=null;
...{
setSize(200,200);
}
public void paint(Graphics g)...{
if(image!=null)
...{
g.drawImage(image,0,0,this);
}
else
...{
this.image=image;
}
}
public void setImage(Image image)
...{
this.image=image;
}
}
希望对学习java 网络编程的同学有所帮助。我的email : pony1976@sina.com.cn. 欢迎转载,请保留我的email.
发送数据的时候: 构建UDP 数据包 需要写好 目的 IP 地址,以及目的主机的端口号
DatagramPacket data=new DatagramPacket(b,b.length,address,7000);
发送数据包 创建 SOCKET 可以不用指定端口号
DatagramSocket mailSend=new DatagramSocket();
接收数据的时候: 创建UDP 数据包不需要写IP 地址和端口号
pack=new DatagramPacket(b,b.length);
接收数据包时,创建SOCKET必须写端口号
mailReceive=new DatagramSocket(7000);
本例子是通过UDP 方式,从服务器端发送一幅图到客户端,客户端显示出来
编译后运行 java Server ,然后再开一个cmd 窗口 运行 java Client 。点击client 窗口的get picture 就可以了
注意 图片文件 a.jpg 需要和编译好的类放在一起。
/** *//**
* @(#)Server.java
*
* Server application
*
* @author
* @version 1.00 2007/4/16
*/
import java.net.*;
import java.io.*;
public class Server ...{
public static void main(String[] args) ...{
DatagramPacket pack=null;
DatagramSocket mailReceive=null;
ServerThread thread;
byte b[]=new byte[8192];
InetAddress address=null;
System.out.println("server is running");
pack=new DatagramPacket(b,b.length);
try ...{
mailReceive=new DatagramSocket(7000);
System.out.println("socket build");
}
catch(IOException e)
...{
e.printStackTrace();
}
while(true)...{
try ...{
mailReceive.receive(pack);
address=pack.getAddress();
System.out.println("get client address:"+address);
}
catch(IOException e)...{
System.out.println("error is here");
}
if(address!=null)
...{
System.out.println("get address");
new ServerThread(address).start();
}
else
...{
System.out.println("can't get address");
continue;
}
}
}
}
class ServerThread extends Thread
...{
InetAddress address;
DataOutputStream out=null;
DataInputStream in=null;
String s=null;
ServerThread(InetAddress address)
...{
this.address=address;
}
public void run()
...{
FileInputStream in;
byte b[]=new byte[8192];
try ...{
in=new FileInputStream("a.jpg");
int n=-1;
while((n=in.read(b))!=-1)
...{
DatagramPacket data=new<
1293c
span style="color:rgb(0,0,0);"> DatagramPacket(b,b.length,address,5678);
DatagramSocket mailSend=new DatagramSocket();
mailSend.send(data);
System.out.println("read image");
}
in.close();
byte end[]="end".getBytes();
DatagramPacket data=new DatagramPacket(end,end.length,address,5678);
DatagramSocket mailSend=new DatagramSocket();
mailSend.send(data);
System.out.println("send all image data ok");
}
catch(Exception e)...{
e.printStackTrace();
}
}
}
/** *//**
* @(#)Client.java
*
*
* @author pkgold1
* @version 1.00 2007/4/16
*/
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Client extends Frame implements Runnable, ActionListener ...{
Button b=new Button("get picture");
ImageCanvas canvas;
public Client() ...{
super("I am a client");
setSize(600,600);
setVisible(true);
b.addActionListener(this);
add(b,BorderLayout.NORTH);
canvas=new ImageCanvas();
add(canvas,BorderLayout.CENTER);
Thread thread=new Thread(this);
validate();
addWindowListener(new WindowAdapter()
...{
public void windowClosing(WindowEvent e)...{
System.exit(0);
}
});
thread.start();
}
public void actionPerformed(ActionEvent event)...{
byte b[]="please send picture".trim().getBytes();
try...{
InetAddress address=InetAddress.getByName("localhost");
DatagramPacket data=new DatagramPacket(b,b.length,address,7000);
DatagramSocket mailSend=new DatagramSocket();
mailSend.send(data);
System.out.println("client send data");
}
catch(Exception e)...{
e.printStackTrace();
}
}
public void run()
...{
DatagramPacket pack=null;
DatagramSocket mailReceive=null;
byte b[]=new byte[8192];
ByteArrayOutputStream out=new ByteArrayOutputStream();
try ...{
pack=new DatagramPacket(b,b.length);
mailReceive=new DatagramSocket(5678);
System.out.println("reay receive data");
}
catch(Exception e)...{
e.printStackTrace();
}
try ...{
while(true)...{
mailReceive.receive(pack);
String message=new String(pack.getData(),0,pack.getLength());
if(message.startsWith("end"))
...{
System.out.println("get all data ok");
break;
}
out.write(pack.getData(),0,pack.getLength());
System.out.println("I am getting data");
}
byte imagebyte[]=out.toByteArray();
out.close();
Toolkit tool=getToolkit();
Image image=tool.createImage(imagebyte);
canvas.setImage(image);
System.out.println("paint image");
canvas.repaint();
validate();
}
catch(IOException e)...{
e.printStackTrace();
}
}
public static void main(String args[])
...{
new Client();
}
}
import java.awt.*;
import java.awt.event.*;
class ImageCanvas extends Canvas
...{
Image image=null;
...{
setSize(200,200);
}
public void paint(Graphics g)...{
if(image!=null)
...{
g.drawImage(image,0,0,this);
}
else
...{
this.image=image;
}
}
public void setImage(Image image)
...{
this.image=image;
}
}
希望对学习java 网络编程的同学有所帮助。我的email : pony1976@sina.com.cn. 欢迎转载,请保留我的email.
相关文章推荐
- java udp传输实例
- java 中模拟UDP传输的发送端和接收端实例详解
- 【基于Java】udp传输实例
- JAVA基础再回首(二十八)——网络编程概述、IP地址、端口号、TCP和UDP协议、Socket、UDP传输、多线程UDP聊天
- java 中HttpClient传输xml字符串实例详解
- Java 网络编程(二) 两类传输协议:TCP UDP
- Java 使用 TCP 和 UDP 传输文件
- Java OCR tesseract 图像智能文字字符识别技术实例代码
- Java UDP 数据传输
- UDP数据传输实例
- java 网络编程【3】 UDP详解及其相关实例
- java图像界面开发简单实例-JTextArea、JScrollPane、JPanel、JButton应用实例
- UDP:Java实现简单大文件传输
- Java NIO实例-DatagramChannel实现UDP协议传输
- java图像用户界面的组件与面板介绍及其实例
- Java使用UDP实现数据的传输
- java-socket传输zip文件实例
- java UDP传输
- 黑马程序员——java网络编程中的传输协议:UDP和TCP
- Java网络编程实例---------------------------------TCP和UDP发送数据统计