Java 基于Socket的UDP通信

前言

网络编程三要素:IP,端口号,协议 

IP:每个设备在网络中的唯一标识,每台网络终端在网络中都有一个独立的地址,我们在网络中传输数据就是使用这个地址。

端口号: 每个程序在设备上的唯一标识,每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。端口号范围从0-65535。编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。

协议:为计算机网络中进行数据交换而建立的规则、标准或约定的集合;

      UDP:面向无连接,数据不安全,速度快。不区分客户端与服务端。

      TCP:面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。

UDP传输

udp传输不区分服务端和客户端,通过DatagramSocket的send和receive方法确定发送端和接收端;

发送端(Send)

主要分一下步骤:

1,创建DatagramSocket, 随机端口号
2,创建DatagramPacket, 指定数据, 长度, 地址, 端口
3,使用DatagramSocket发送DatagramPacket
4,关闭DatagramSocket

public class Send {
	public static void main(String[] args) throws IOException {
		send1();
	}

	private static void send1() throws SocketException, UnknownHostException, IOException {
		Scanner s = new Scanner(System.in);
		DatagramSocket socket = new DatagramSocket(); //随机端口号
		while(true) {
			String data= s.nextLine();
			byte[] b = data.getBytes();
			if("拜拜".equals(data)) {
				break;
			}
			DatagramPacket packet = new DatagramPacket(b, b.length,InetAddress.getByName("127.0.0.1"), 8888);
			socket.send(packet);
		}
		socket.close();
	}
}

接收端

1,创建DatagramSocket, 必须要指定一个端口
2,创建DatagramPacket, 指定数组, 长度
3,使用DatagramSocket接收DatagramPacket
4,从DatagramPacket中获取数据
5,关闭DatagramSocket

public class Receive {
	
	public static void main(String[] args) throws IOException {
		receve1();
	}
	
	private static void receve1() throws SocketException, IOException {
		DatagramSocket socket = new DatagramSocket(8888);
		DatagramPacket packet = new DatagramPacket(new byte[64],64);
		while(true) {
			socket.receive(packet);
			byte[] re=packet.getData();
			System.out.println(new String(re,0,packet.getLength()));
		}
	}	
}

猜你喜欢

转载自blog.csdn.net/ezconn/article/details/108479326