UDP传输
udp传输数据就好像在大海上运输货物,DatagramSocket就像的两个通信港口的码头,DatagramPacket就像在两端运输货物的轮船
- 发送端(send)
- 创建DatagramSocket,随机端口号
- 创建DatagramPacket,制定数据,长度,地址和端口
- 使用DatagramSocket发送DatagramPacket
- 关闭DatagramSocket
- 异常处理
package com.internet;
import java.io.IOException;
import java.net.*;
public class udp_send {
public static void main(String[] args) throws IOException { //异常处理
String str="Are you Ok?"; //要发送的数据(货物)
DatagramSocket datagramSocket = new DatagramSocket(); //创建DatagramSocket(码头)
DatagramPacket datagramPacket =
new DatagramPacket(str.getBytes(),str.getBytes().length, InetAddress.getByName("192.168.1.167"),1111); //创建DatagramPacket,相当于货轮,将数据打包(要发送的数据,数据的长度,Ip地址,端口)
datagramSocket.send(datagramPacket); //发送(发货)
datagramSocket.close(); //关闭(码头)
}
}
- 接收端(receive)
- 创建DatagramSocket,匹配端口号
- 创建DatagramPacket,创建接收数据和有效数据长度
- 接收socket
- 接收packet
- 关闭DatagramSocket
package com.internet;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class udp_receive {
public static void main(String[] args) throws IOException {
DatagramSocket datagramSocket = new DatagramSocket(1111); //创建(码头)
DatagramPacket datagramPacket = new DatagramPacket(new byte[1024],1024); //创建DatagramPacket(集装箱)
datagramSocket.receive(datagramPacket); //接收数据
byte[] arr = datagramPacket.getData(); //获取数据
int len=datagramPacket.getLength(); //获取有效长度
System.out.println(new String(arr,0,len));
datagramSocket.close(); //关闭(码头)
}
}