首先如果TCP学过以后,再看UDP进行数据传输也是大同小异的,只是用到的类不同
UDP进行传输需要DataSocket和Datapacket类,Datapacket叫数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,
以及要发送到的接收端的IP、端口号。
UDP进行传输是将数据全部打包,然后一起发过去,容易造成数据丢失,但速度较快,比如要下载一个电影,缺失几侦并没有什么影响,但需要快速下载,这个时候可以选择UDP进行传输,所谓各有所长,具体选择那种方式还是要看具体需要。
接下来附加一个UDP进行文字传输,然后接收端打印到控制台上
package com.UDP.java; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import org.junit.Test; public class TestUDP {
// 发送端
@Test
public void send() {
DatagramSocket ds = null;
try {
ds = new DatagramSocket();
// 创建一个数据报,每一个数据报不能大于64k,都记录着数据信息,发送端的IP、端口号,以及要发送到
// 的接收端的IP、端口号。
byte[] b = "我是发送端".getBytes();
DatagramPacket pack = new DatagramPacket(b, 0, b.length,
InetAddress.getByName("192.168.1.101"), 9090);
ds.send(pack);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (ds != null) {
ds.close();
}
}
} // 接收端
@Test
public void receive() {
DatagramSocket ds = null;
try {
ds = new DatagramSocket(9090);
byte[] b = new byte[1024];
DatagramPacket pack = new DatagramPacket(b, 0, b.length);
ds.receive(pack);
String str = new String(pack.getData(), 0, pack.getLength());
System.out.println(str);
}catch (IOException e) {
e.printStackTrace();
}
finally{
if(ds != null){
ds.close();
}
}
}
}