一,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);
}
}