标签:
UDP传输
DatagramSocket与DatagramPacket
建立发送端,接收端。
建立数据包。
调用Socket的发送接收方法。
关闭Socket。
发送端与接收端是两个独立的运行程序。
例子1:UDP发送接收数据
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/*
*UDP协议发送数据:
* A:创建发送端Socket对象
* B:创建数据,并把数据打包
* C:调用Socket对象的发送方法发送数据包
* D:释放资源
*/
public class SendDemo {
publicstatic void main(String[] args) throws IOException {
//TODO Auto-generated method stub
//创建发送端Socket对象
//DatagramSocket()
DatagramSocketds = new DatagramSocket();
//创建数据,并把数据打包
//DatagramPacket(byte[]buf,int length,InetAddress address,int port)
//创建数据
byte[]bys = "hello,udp,我来了".getBytes();
//长度
intlength = bys.length;
//IP地址
InetAddressaddress = InetAddress.getByName("219.216.80.19");
//端口
intport = 10086;
DatagramPacketdp = new DatagramPacket(bys,length,address,port);
//调用Socket对象发送数据包
//publicvoid send (DatagramPacket dp)
ds.send(dp);
//释放资源
ds.close();
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
/*
* UDP协议接受数据:
* A:创建发送端Socket对象
* B:创建数据包(接受容器)
* C:调用Socket对象的接受方法接受数据
* D:解析数据,并显示在控制台
* D:释放资源
*/
public classReceiveDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//创建接收端Socket对象
//DatagramSocket(int port)
DatagramSocketds = new DatagramSocket(10086);
//创建一个数据包(接收数据)
byte[] bys = new byte[1024];
int length = bys.length;
DatagramPacketdp = newDatagramPacket(bys,length);
//调用Socket对象的接收方法接收数据
ds.receive(dp);
//解析数据包
InetAddressaddress = dp.getAddress();
Stringip = address.getHostAddress();
byte[] bys2 =dp.getData();
int len = dp.getLength();
Strings = newString(bys,0,len);
System.out.println(s);
System.out.println(ip+":"+s);
//释放资源
ds.close();
}
}
运行结果:
hello,udp,我来了
219.216.80.19:hello,udp,我来了
UDP发送接收数据图解:
标签:
原文地址:http://blog.csdn.net/wangyanming123/article/details/51347148