一,UDP的编程
优点:传输速度快。
缺点:无连接,不可靠,无序的。
二,原理
进行数据传输是,首先需要将要传输的数据定义成数据报(Datagram),在数据中支出所要到达的地址以及端口号,然后再将数据发送出。
DatagramPacket:表示数据包
DatagramSocket:端到端的通信类
步骤在代码中已经标注了:
客户端:
package UDP; 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 Client { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //1.定义服务器的地址 要向那个地方发送数据 服务器的端口号 以及要定义的发送的信息 InetAddress address = InetAddress.getByName("localhost"); int port = 1258; byte[] data = "用户名:admin;密码:789".getBytes(); //2.创建数据包 包含所要发送的信息 DatagramPacket packet = new DatagramPacket(data,data.length,address,port); //3.创建DatagramSocket对象 DatagramSocket socket = new DatagramSocket(); //4.向服务器端发送数据 socket.send(packet); } }
服务端:
package UDP; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; /** * 基于UDP的Socket的编程 服务端 * @author NullChen * */ public class Server { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub //1.创建DatagramSocket 指定端口号 DatagramSocket dSocket = new DatagramSocket(1258); //2.创建数据包 DatagramPacket byte[] data = new byte[1024]; DatagramPacket dPacket = new DatagramPacket(data,data.length); //3.接受收客户端发送的数据信息 dSocket.receive(dPacket); //此方法在接收到数据宝之前会一直阻塞 //4.读取信息 String info = new String(data,0,dPacket.getLength()); System.out.println("我是服务器,客户端说"+info); } }