java:(一)基于UDP的单客户端连接

简单了解一下













客户端demo:

package demo_Socket;

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

/*
 * 服务端,实现基于UDP的用户登陆
 * 
 */
public class UDP_Server {

	public static void main(String[] args) {

		try {
			// 1.创建服务端DatagramSocket,并指定端口,如果不指定则使用默认端口
			DatagramSocket socket = new DatagramSocket(8880);
			// 2.创建字节数组与数据报,用于接收客户端发送的数据
			byte[] data = new byte[1024];
			// 数据报,指定数组与一次接收的长度
			DatagramPacket packet = new DatagramPacket(data, data.length);
			try {
				System.out.println("服务端已启动,正在等待客户端链接....");
				// 3.接收客户端发送的数据,类似于监听,在未接收到数据之前会一直阻塞
				socket.receive(packet);
				// 读取到包的长度,如果设置为读取到数组的长度会有可能导致出现空字符
				String info = new String(data, 0, packet.getLength());
				System.out.println("我是服务器,客户端说:" + info);
				/*
				 * 向客户端响应信息
				 */
				// 1.定义客户端的地址,端口号,数据
				// 获取客户地址
				InetAddress address = packet.getAddress();
				// 获取客户端的端口号
				int port = packet.getPort();
				// 定义数组包含要发送的信息
				byte[] data2 = "欢迎使用服务端".getBytes();

				DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
				// 发送
				socket.send(packet2);
				socket.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (SocketException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}


客户端:

package demo_Socket;

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 UDP_cilent {

	public static void main(String[] args) {
		try {
			// 1.定义服务器地址,端口号,数据
			InetAddress address = InetAddress.getByName("localhost");
			int port = 8880;
			byte[] data = "用户名:admin;密码:123".getBytes();
			// 2.创建数据报包含数据信息 数组,数组长度,地址,端口号
			DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
			try {
				// 3.创建DatagramSocket对象
				DatagramSocket socket = new DatagramSocket();
				try {
					// 4.发送数据
					socket.send(packet);

					/*
					 * 接收服务器端响应的数据
					 */
					// 1.创建数据报用于接收服务端响应的数据
					byte[] data2 = new byte[1024];

					DatagramPacket packet2 = new DatagramPacket(data2, 0, data2.length);
					// 监视服务端的数据
					socket.receive(packet2);
					String reply = new String(data2, 0, packet2.getLength());
					System.out.println("我是客户端,服务器说: " + reply);
					socket.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();

				}
			} catch (SocketException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

版权声明:本文为include_ice原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/include_ice/article/details/79661062