Maison  >  Article  >  Java  >  Comment implémenter la programmation UDP pour la communication réseau basée sur le protocole UDP en Java

Comment implémenter la programmation UDP pour la communication réseau basée sur le protocole UDP en Java

王林
王林avant
2023-05-17 13:13:471197parcourir

Communication de programmation UDP

Introduction de base

  • Class DatagramSocket et DatagramPacket [data packet/datagram] implémentent un réseau basé sur le protocole UDP programme.

  • Les datagrammes UDP sont envoyés et reçus via DatagramSocket. Le système ne garantit pas que les datagrammes UDP puissent être livrés en toute sécurité à la destination, et il ne sait pas non plus quand ils pourront arriver.

  • L'objet DatagramPacket encapsule un datagramme UDP. Le datagramme contient l'adresse IP et le numéro de port de l'expéditeur ainsi que l'adresse IP et le numéro de port du destinataire.

  • Chaque datagramme du protocole UDP donne des informations d'adresse complètes, il n'est donc pas nécessaire d'établir une connexion entre l'expéditeur et le destinataire.

Processus de base

  • Les deux classes/objets principaux Domaine DatagramSocket DatagramPacket

    #🎜 🎜 #
  • Établissez l'expéditeur et le destinataire.

  • Créer un paquet de données

  • Appeler les méthodes d'envoi et de réception de DatagramSocket

    #🎜🎜 #

  • Fermez DatagramSocket.
  • Schéma de principe de programmation réseau UDP

Comment implémenter la programmation UDP pour la communication réseau basée sur le protocole UDP en JavaDescription UDP :

#🎜 🎜#

Il n'y a pas de serveur et de client clairs, qui ont évolué vers l'expéditeur et le destinataire des données.
  • La réception et la génération de données s'effectuent via l'objet DatagramSocket.
  • Encapsuler les données dans un objet/package DatagramPacket.
  • Lors de la réception de l'objet DatagramPacket, il doit être décompressé et les données retirées
  • DatagramSocket peut être spécifié dans lequel Le port reçoit des données.
  • package com.study.srv.demo18;
    import java.io.IOException;
    import java.net.*;
    /**
     * @version 1.0
     * UDP发送端
     */
    public class Demo11 {
        public static void main(String[] args) throws IOException {
            //1.创建DatagramSocket对象,准备发送和接收数据,在9998端口接收
            DatagramSocket datagramSocket = new DatagramSocket(9998);
            //2.将需要发送的数据,封装到DatagramPacket对象
            String s="发送的数据";
            byte[] buf=s.getBytes();
            InetAddress ip = InetAddress.getByName("192.168.0.18");
            //说明:封装的DatagramPacket对象
            //buf 内容字节数组
            //buf.length 数据长度
            //ip 主机(ip)
            //9999 端口
            DatagramPacket packet = new DatagramPacket(buf, buf.length, ip, 9999);
            //发送数据
            datagramSocket.send(packet);
            //关闭资源
    //        datagramSocket.close();
            System.out.println("发送完毕");
            //发送端变为接收端接收数据
            byte[] bytes = new byte[1024];
            DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);
            datagramSocket.receive(datagramPacket);
            int length = datagramPacket.getLength();
            byte[] data = datagramPacket.getData();
            String string = new String(data, 0, length);
            System.out.println(string);
            datagramSocket.close();
            System.out.println("接受结束");
        }
    }
    rrree

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer