网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换
java网络编程相关类 IP地址:InetAddress /InetSocketAddress
URL UDP: DatagramSocket,DatagramPacket
TCP:ServerSocket Socket
UDP通信原理
java提供了DatagramSocket类作为基于UDP协议的Socket,DatagramPocket类表示数据报包,使用此类对象创建数据并把数据打包
UDP发送数据
import java.io.IOException;
import java.net.*;
public class UDPSocketSend {
public static void main(String[] args) throws IOException {
//创建发送端的Socket对象
DatagramSocket address=new DatagramSocket();
//创建数据,并把数据打包
byte[] bys="hello world".getBytes();
DatagramPacket ds=new DatagramPacket(bys,bys.length,InetAddress.getByName("172.20.2.154"),10086);
//调用DatagramSocket对象的方法发送数据
address.send(ds);
//关闭发送端
address.close();
}
}
UDP接收数据
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceive {
public static void main(String[] args) throws IOException {
//创建接收端的Socket对象
DatagramSocket ds=new DatagramSocket(10086);
//创建数据包,用于接收数据
byte[] bys=new byte[1024];
DatagramPacket dp=new DatagramPacket(bys,bys.length);
//利用DatagramSocket对象的方法接收数据
ds.receive(dp);
//解析数据包,并把数据在控制台上显示
//byte[] getData() 返回数据缓冲区
byte[] data=dp.getData();
String dataString=new String(data,0,data.length);
System.out.println("数据是"+dataString);
//关闭接收端
ds.close();
}
}
若是先运行发送方再运行接收方,则收不到数据,因为发送速度太快,在发送方关闭之后接收方收不到数据
所以要先运行接收方,再运行发送方