java udp类_JAVA编程实现UDP网络通讯的方法示例

本文实例讲述了JAVA编程实现UDP网络通讯的方法。分享给大家供大家参考,具体如下:

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。

在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点:

也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。

采用UDP协议要先把数据定义成数据报(Datagram)并在数据报中指明数据所要达到的Socket,再进行数据传递。

主要涉及的两个类:

DatagramPacket:数据报包类

DatagramSocket:数据端对端通讯类

简单demo之UDP服务端:

public class UdpServer {

public static void main(String[] args) {

// 实现步骤1:创建DatagramSokcet

try {

DatagramSocket mSocket = new DatagramSocket(9999);

// 实现步骤2:创建DatagramPacket

byte[] data = new byte[1024];

DatagramPacket mPacket = new DatagramPacket(data, data.length);

// 实现步骤3:接收 数据

mSocket.receive(mPacket);

// 实现步骤4:处理数据

String result = new String(data, 0, mPacket.getLength());

System.out.println(result);

/**** 回复客户端 ****************/

byte[] response = "我是UDP服务端,已经回到你的请求".getBytes();

mPacket.setData(response);

mSocket.send(mPacket);

mSocket.close();

} catch (SocketException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

简单demo之UDP客户端:

public class UdpClient {

private static String sendData = "我是UDP客户端,请求连接服务端";

public static void main(String[] args) {

try {

// 步骤1:指定服务器的信息

InetAddress mAddress = InetAddress.getByName("localhost");

int port = 9999;

byte[] data = sendData.getBytes();

// 步骤2:创建DatagramPacket

DatagramPacket mPacket = new DatagramPacket(data, data.length,

mAddress, port);

// 步骤3:创建DatagramSocket

DatagramSocket mSocket = new DatagramSocket();

// 步骤4:向服务端发送数据

mSocket.send(mPacket);

/***** 下面接收服务器返回数据 ***************************/

// 实现步骤3:接收 数据

mSocket.receive(mPacket);

// 实现步骤4:处理数据

String response = new String(data, 0, mPacket.getLength());

System.out.println(response);

// 关闭资源

mSocket.close();

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SocketException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

希望本文所述对大家java程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值