基于UDP的socket通信实现(socket学习)

UDP(用户数据包协议)协议是无连接的、不可靠的、无序的,数据报为传输的载体。

相关使用到的类DatagramPacket:表示数据报包

DatagramSocket:进行端到端通信的类

下面代码具体举例:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;

/*UDP服务端*/
public class UDPServer {
	public static void main(String[] args) throws IOException {
		//1、创建服务器端DatagramSocket,指定端口
		DatagramSocket socket=new DatagramSocket(8800);
		
		//2、创建数据报,用于接收客户端发送的数据
		byte[] data=new byte[1024];
		DatagramPacket packet=new DatagramPacket(data,data.length);
		//3、接收客户端发送的数据
		System.out.println("***服务器已经启动***");
		socket.receive(packet);//此方法在接收到数据报之前一直阻塞
		//4、读取数据
		String info=new String(data,0,packet.getLength());
		System.out.println("我是服务器,客户端说:"+info);
		
		/**
		 * 响应客户端*/
		//1.定义客户端地址、端口、数据
		InetAddress address=packet.getAddress();
		int port=packet.getPort();
		byte[] data2="欢迎您".getBytes();
		//2.创建数据报,包含响应信息
		DatagramPacket packet2=new DatagramPacket(data2,data2.length,address,port);
		//3.响应客户端
		socket.send(packet2);
		//4.关闭资源
		socket.close();
	}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.net.DatagramSocket;
public class UDPClient {
	public static void main(String[] args) throws IOException {
		//1、定义服务器的地址,端口号、数据
		InetAddress address=InetAddress.getByName("localhost");
		int port=8800;
		byte[] data="用户名:admin;密码:123".getBytes();
		//2.创建数据报
		DatagramPacket packet=new DatagramPacket(data,data.length,address,port);
		//3.创建DategramSocket对象
		DatagramSocket socket=new DatagramSocket();
		//4.向服务器发送数据报
		socket.send(packet);
		
		/*接收服务器响应的数据
		 */
		byte[] data2=new byte[1024];
		DatagramPacket packet2=new DatagramPacket(data2,data2.length);
		//2、接收服务端发送的数据
		socket.receive(packet2);//此方法在接收到数据报之前一直阻塞
		//3、读取数据
		String reply=new String(data2,0,packet2.getLength());
		System.out.println("我是客户端,服务器说:"+reply);
		//4.关闭资源
		socket.close();
	}
}

实现了基于UDP的socket通信



你可能感兴趣的:(java,WEB开发,UDP,socket)