concepto
UDP y TCP son dos protocolos de transmisión de red comunes. UDP se caracteriza por una alta velocidad, pero poca estabilidad y puede perder datos. Los datos de tcp son muy estables pero relativamente lentos.
Ejemplo de datos de transmisión de protocolo UDP
crear remitente
package com.test.udpTest;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UdpSend {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//发送端
try {
//1.创建一个socket(码头)
DatagramSocket datagramSocket=new DatagramSocket();
//2.创建packet (集装箱)
byte[] data="你好,通信技术".getBytes();
int length=data.length;
InetAddress ip=InetAddress.getByName("192.168.8.4");
int port=8888; // 0-1023端口号一般是常用的知名的程序的端口号 65535以内
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
DatagramPacket datagramPacket=new DatagramPacket(data, length, ip, port);
//3.发送
datagramSocket.send(datagramPacket);
//4.关闭码头
datagramSocket.close();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
crear receptor
package com.test.udpTest;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpReceive {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//1.创建码头 接收端的码头需要添加端口号,发送端端口号要跟接收端的端口号一致
try {
DatagramSocket datagramSocket=new DatagramSocket(8888);
//2.创建packet 用来接收传递过来的数据
byte[] data=new byte[1024];
int length=data.length;
DatagramPacket datagramPacket=new DatagramPacket(data, length);
//3.接收数据
datagramSocket.receive(datagramPacket);
String ip=datagramPacket.getAddress().getHostAddress();
String msg=new String(data);
System.out.println("接收到来自"+ip+"的信息:"+msg);
//4.关闭码头
datagramSocket.close();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Ejecute primero el extremo receptor y luego ejecute el extremo emisor. Como se muestra en la figura, el extremo receptor recibió correctamente los datos.