首页 > 开发 > Java > 正文

JAVA编程实现UDP网络通讯的方法示例

2024-07-13 10:10:28
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表