java小白——UDP服务器客户端传输数据

UDP属于无连接的传输协议
因此传输数据时应创建一个数据发送包,一个数据接收包。在java实现如下
服务器

package 网络编程;

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

public class ServerTestUDP {

	public static void main(String[] args) {
		DatagramSocket socket = null;//设置服务器的套接字
		DatagramPacket server_send = null;//设置发送包
		DatagramPacket server_recive = null;//设置接收包
		int port = 5151;//
		try {
			socket = new DatagramSocket(port);//实例化服务器套接字
			System.out.println("服务器启动");
			byte []r = new byte[1024];//建立一个缓冲流对象
			server_recive = new DatagramPacket(r, r.length);//建立接收包对象
			socket.receive(server_recive);//得到接收包
			InetAddress address = server_recive.getAddress();//从接收的包中获取ip地址
			int clientport = server_recive.getPort();//获取端口号
			byte []data = server_recive.getData();//获取数据
			int len = server_recive.getLength();//获取数据包长度
			String str = new String(data,0,len);//将接收包转换为字符串
			System.out.println("客户端ip地址:"+address);//输出
			System.out.println("客户端端口号:"+port);//
			System.out.println("客户端信息:"+str);//
			String str1 = "hello,我是server!";
			byte []s = str1.getBytes();//为发送的字符串设立一个缓冲流存储它
			server_send = new DatagramPacket(s, s.length,address,clientport);//实例化发送包的对象
			socket.send(server_send);//发送发送包
			
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}finally {
			socket.close();
		}

	}

}


客户端:

package 网络编程;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class ClientTestUDP {

	public static void main(String[] args) {
		DatagramSocket socket = null;//设置客户端的UDP连接的套接字
		DatagramPacket packet_send = null;//设置发送包对象
		DatagramPacket packet_recive = null;//设置接收包对象
		String server = "127.0.0.1";//设置服务器的地址
		int port = 5151;//服务器的端口号
		String str = "我是clientA";//向服务器发送的信息
		byte[] data = str.getBytes();//建立缓存流向data里输入信息
		try {
			socket = new DatagramSocket();//实例化套接字对象
			InetAddress address = InetAddress.getByName(server);//将服务器的ip地址封装成InetAddress的对象
			packet_send = new DatagramPacket(data, data.length,address,port);//创建拥有服务器端口号服务器ip地址,还有要发送的信息的UDP数据包
			socket.send(packet_send);//使用send()方法向服务器发送数据包
			byte [] r = new byte [1024];//建立一个字节数为1024的缓冲流
			packet_recive = new DatagramPacket(r, r.length);//设立接收包的对象
			socket.receive(packet_recive);//使用receive()方法接收数据包
			byte []response = packet_recive.getData();//得到接收包中的数据
			int len = packet_recive.getLength();//得到接收包信息长度
			String str1 = new String(response,0,len);//将接收包中的数据变成字符串
			System.out.println(str1);//输出字符串
		} catch (Exception e) {
			System.out.println(e);
		}finally {
			socket.close();
		}

	}

}

运行结果:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

发布了82 篇原创文章 · 获赞 21 · 访问量 2042

猜你喜欢

转载自blog.csdn.net/weixin_45174208/article/details/103394015