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

本文介绍了一个简单的基于UDP协议的服务端与客户端交互示例。服务端接收来自客户端的登录信息,并向客户端返回欢迎消息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单了解一下













客户端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();
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值