Socket编程——UDP编程

冷不防 2022-07-12 05:45 326阅读 0赞

UDP协议(用户数据协议)

是无连接、不可靠的、无序的 特点在于速度比较快

UDP协议以数据报作为数据传输的载体

进行数据传输时,首先需要将要传输的数据定义成数据报(Datagram),在数据报中指明数据所要达到的Socket(主机地址和端口号),然后再将数据报发送出去。

相关操作类:

DatagramPacket:表示数据报包

DatagramSocket:进行端到端通信的类

DatagramPacket

常用构造方法:

构造数据报包,用来将长度为length的包发送到指定主机上的指定端口号。

DatagramPacket(byte[] buf,int length ,InetAddress address ,int port)//数据,长度,目标地址,端口号

构造DatagramPacket,用来接收长度为length的数据包

DatagramPacket(byte[] buf ,int length)//数据,长度

DatagramSocket

用来表示发送和接收数据报包的套接字。

构造方法:

构造数据报套接字并将其绑定到本地主机上任何可用的端口。

DatagramSocket()

创建数据报套接字,将其绑定到指定的本地地址。

DatagramSocket(int port ,InetAddress Iaddr)

常用方法:

close()

I netAddress getInetAddress()//返回此套接字连接地址

int getPort()//返回此套接字的端口

void send(DatagramPacket p) 从此套接字发送数据报包

void receive(DatagramPacket p) 从此套接字接收数据报包

服务器端实现步骤

1、创建DatagramSocket,指定端口号

2、创建DatagramPacket

3、接收客户端发送的数据信息

4、读取数据

客户端实现步奏

1、定义发送信息

2、创建DatagramPacket,包含将要发送的信息

3、创建DatagramSocket

4、发送数据

代码实现:

服务器端:

  1. package com.txr.Socket;
  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. import java.net.SocketException;
  7. /*
  8. * 服务器端,实现基于UDP的用户登录
  9. */
  10. public class UDPSercer {
  11. public static void main(String[] args) throws IOException {
  12. //1、创建服务器端DatagramSocket,指定端口
  13. DatagramSocket socket=new DatagramSocket(8800);
  14. //2、创建数据报,用于接收客户端发送的数据
  15. byte[] data=new byte[1024];
  16. DatagramPacket packet=new DatagramPacket(data, data.length);
  17. //3、接收客户端发送的数据
  18. System.out.println("服务器端已经启动,等待客户端发送数据");
  19. socket.receive(packet);//此方法在接收到数据报之前会一直阻塞
  20. //4、读取数据
  21. String info =new String(data, 0, packet.getLength());
  22. System.out.println("我是服务器,客户端说:"+info);
  23. /**
  24. * 向客户端响应数据
  25. */
  26. //1、定义客户端的地址、端口号、数据
  27. InetAddress add=packet.getAddress();
  28. int port1 = packet.getPort();
  29. byte[] data2="欢迎您!".getBytes();
  30. //2、创建数据报,包含响应的数据信息
  31. DatagramPacket packet2=new DatagramPacket(data2, data2.length, add, port1);
  32. //3、响应客户端
  33. socket.send(packet2);
  34. //4、关闭资源
  35. socket.close();
  36. }
  37. }

客户端:

  1. package com.txr.Socket;
  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;
  6. /*
  7. * 客户端
  8. */
  9. public class UDPClient {
  10. /*
  11. * 接收客户端信息
  12. */
  13. public static void main(String[] args) throws IOException {
  14. //1.定义服务器的地址、端口号、数据
  15. InetAddress address=InetAddress.getByName("localhost");
  16. int port=8800;
  17. byte[] data ="用户名 :admin ;密码:123".getBytes();
  18. //2、创建数据报,包含发送的数据信息
  19. DatagramPacket packet=new DatagramPacket(data, data.length, address, port);
  20. //3、创建DatagramSocket对象
  21. DatagramSocket socket =new DatagramSocket();
  22. //4、向服务器端发送数据报
  23. socket.send(packet);
  24. /*
  25. * 接收服务器端响应的数据
  26. */
  27. //1、创建数据报,用于接收服务器端的响应的数据
  28. byte[] data2=new byte[1024];
  29. DatagramPacket packet2=new DatagramPacket(data2, data2.length);
  30. //2、接收服务器响应的数据
  31. socket.receive(packet2);
  32. //3、读取数据
  33. String reply =new String(data2,0,packet2.getLength());
  34. System.out.println("我是客户端,服务器说:"+reply);
  35. //4、关闭资源
  36. socket.close();
  37. }
  38. }

发表评论

表情:
评论列表 (有 0 条评论,326人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java——TCP UDP Socket编程

    目录 一、网络的相关概念 (一)网络通信 (二)网络 (三)ip地址 (四)ipv4地址分类 (五)域名 (六)网络通信协议 (七)TCP和UDP 二、Ine

    相关 socket与TCP/UDP编程

    Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编

    相关 Socket编程——UDP编程

    UDP协议(用户数据协议) 是无连接、不可靠的、无序的 特点在于速度比较快 UDP协议以数据报作为数据传输的载体 进行数据传输时,首先需要将要传输的数据定义成数据报(