JAVA UDP 图像传输实例.docx
- 文档编号:5814980
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:8
- 大小:15.84KB
JAVA UDP 图像传输实例.docx
《JAVA UDP 图像传输实例.docx》由会员分享,可在线阅读,更多相关《JAVA UDP 图像传输实例.docx(8页珍藏版)》请在冰豆网上搜索。
JAVAUDP图像传输实例
JAVAUDP图像传输实例
Toolkit.getDefaultToolkit().
JAVAUDP图像传输实例
2007-04-1810:
191908人
前言:
UDP方式传递数据分两个步骤,第一步构建UDP数据包,第二步创建UDPSOCKET
发送数据的时候:
构建UDP数据包需要写好目的IP地址,以及目的主机的端口号
DatagramPacketdata=newDatagramPacket(b,b.length,address,7000);
发送数据包创建SOCKET可以不用指定端口号
DatagramSocketmailSend=newDatagramSocket();
接收数据的时候:
创建UDP数据包不需要写IP地址和端口号
pack=newDatagramPacket(b,b.length);
接收数据包时,创建SOCKET必须写端口号
mailReceive=newDatagramSocket(7000);本例子是通过UDP方式,从服务器端发送一幅图到客户端,客户端显示出来编译后运行javaServer,然后再开一个cmd窗口运行javaClient。
点击client窗口的getpicture就可以了
注意图片文件a.jpg需要和编译好的类放在一起。
/***//**
*@(#)Server.java
*
*Serverapplication
*
*@author
*@version1.002007/4/16
*/
import.*;
importjava.io.*;
publicclassServer...{
publicstaticvoidmain(String[]args)...{
DatagramPacketpack=null;
DatagramSocketmailReceive=null;
ServerThreadthread;
byteb[]=newbyte[8192];
InetAddressaddress=null;
System.out.println("serverisrunning");
pack=newDatagramPacket(b,b.length);
try...{
mailReceive=newDatagramSocket(7000);
System.out.println("socketbuild");
}
catch(IOExceptione)
...{
e.printStackTrace();
}
while(true)...{
try...{
mailReceive.receive(pack);
address=pack.getAddress();
System.out.println("getclientaddress:
"+address);
}
catch(IOExceptione)...{
System.out.println("errorishere");
}
if(address!
=null)
...{
System.out.println("getaddress");
newServerThread(address).start();
}
else
...{
System.out.println("can'tgetaddress");
continue;
}
}
}
}
classServerThreadextendsThread
...{
InetAddressaddress;
DataOutputStreamout=null;
DataInputStreamin=null;
Strings=null;
ServerThread(InetAddressaddress)
...{
this.address=address;
}
publicvoidrun()
...{
FileInputStreamin;
byteb[]=newbyte[8192];
try...{
in=newFileInputStream("a.jpg");
intn=-1;
while((n=in.read(b))!
=-1)
...{
DatagramPacketdata=newDatagramPacket(b,b.length,address,5678);
DatagramSocketmailSend=newDatagramSocket();
mailSend.send(data);
System.out.println("readimage");
}
in.close();
byteend[]="end".getBytes();
DatagramPacketdata=newDatagramPacket(end,end.length,address,5678);
DatagramSocketmailSend=newDatagramSocket();
mailSend.send(data);
System.out.println("sendallimagedataok");
}
catch(Exceptione)...{
e.printStackTrace();
}
}
}
/***//**
*@(#)Client.java
*
*
*@authorpkgold1
*@version1.002007/4/16
*/import.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.io.*;publicclassClientextendsFrameimplementsRunnable,ActionListener...{
Buttonb=newButton("getpicture");
ImageCanvascanvas;
publicClient()...{
super("Iamaclient");
setSize(600,600);
setVisible(true);
b.addActionListener(this);
add(b,BorderLayout.NORTH);
canvas=newImageCanvas();
add(canvas,BorderLayout.CENTER);
Threadthread=newThread(this);
validate();
addWindowListener(newWindowAdapter()
...{
publicvoidwindowClosing(WindowEvente)...{
System.exit(0);
}
});
thread.start();
}
publicvoidactionPerformed(ActionEventevent)...{
byteb[]="pleasesendpicture".trim().getBytes();
try...{
InetAddressaddress=InetAddress.getByName("localhost");
DatagramPacketdata=newDatagramPacket(b,b.length,address,7000);
DatagramSocketmailSend=newDatagramSocket();
mailSend.send(data);
System.out.println("clientsenddata");
}
catch(Exceptione)...{
e.printStackTrace();
}
}
publicvoidrun()
...{
DatagramPacketpack=null;
DatagramSocketmailReceive=null;
byteb[]=newbyte[8192];
ByteArrayOutputStreamout=newByteArrayOutputStream();
try...{
pack=newDatagramPacket(b,b.length);
mailReceive=newDatagramSocket(5678);
System.out.println("reayreceivedata");
}
catch(Exceptione)...{
e.printStackTrace();
}
try...{
while(true)...{
mailReceive.receive(pack);
Stringmessage=newString(pack.getData(),0,pack.getLength());
if(message.startsWith("end"))
...{
System.out.println("getalldataok");
break;
}
out.write(pack.getData(),0,pack.getLength());
System.out.println("Iamgettingdata");
}
byteimagebyte[]=out.toByteArray();
out.close();
Toolkittool=getToolkit();
Imageimage=tool.createImage(imagebyte);
canvas.setImage(image);
System.out.println("paintimage");
canvas.repaint();
validate();
}
catch(IOExceptione)...{
e.printStackTrace();
}
}
publicstaticvoidmain(Stringargs[])
...{
newClient();
}
}
importjava.awt.*;
importjava.awt.event.*;
classImageCanvasextendsCanvas
...{
Imageimage=null;
...{
setSize(200,200);
}
publicvoidpaint(Graphicsg)...{
if(image!
=null)
...{
g.drawImage(image,0,0,this);
}
else
...{
this.image=image;
}
}
publicvoidsetImage(Imageimage)
...{
this.image=image;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA UDP 图像传输实例 图像 传输 实例