concept
UDP and TCP are two common network transmission protocols. UDP is characterized by fast speed, but poor stability and may lose data. The tcp data is highly stable but relatively slow.
Example of udp protocol transmission data
create sender
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();
}
}
}
create receiver
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();
}
}
}
Run the receiving end first, and then run the sending end. As shown in the figure, the receiving end successfully received the data.