JAva版単発、放送、マルチキャスト

2232 ワード

概要:
現在のネットワーク通信には、マルチキャスト、ブロードキャスト、マルチキャスト(マルチキャスト)の3つの通信モードがあり、その中でマルチキャストの出現時間が最も遅く、同時にマルチキャストとブロードキャストの利点を備えている.
ユニキャスト:シングルホストとシングルホスト間の通信ブロードキャスト:ホストとネットワーク内のすべてのホストとの通信マルチキャスト:ホストと選択したホストのセットとの通信
  • ユニキャスト:ユニキャストアドレスはIPネットワークで最も一般的です.ユニキャストの宛先アドレスを含むパケットは、特定のホストに送信、一例として、IPアドレスは192.168である.1.5(ソースアドレス)のホストはIPアドレス192.168.1.200(ターゲットアドレス)のサーバーにウェブページを要求する.これは最も一般的な要求方式である.javaインスタンスコードは以下の通りである.我々はUDP通信方式DatagramSocketを採用し、TCPのServer Socketとの違いはServerSocket , DatagramSocket , UDP
  • である.
    package net;
    
    import java.io.IOException;
    import java.net.*;
    import java.util.Arrays;
    
    public class DanboDemo {
    
        private static final int MAXREV = 255;
    
    
        public static void sendMsg(String message) throws IOException {
            byte[] msg = message.getBytes();
    
            DatagramSocket client = new DatagramSocket();
    
            InetAddress inetAddr = InetAddress.getLocalHost();
            SocketAddress socketAddr = new InetSocketAddress(inetAddr, 8888);
    
            DatagramPacket sendPacket = new DatagramPacket(msg, msg.length,
                    socketAddr);
    
            client.send(sendPacket);
    
            client.close();
        }
    
    
        public static  void received() throws IOException {
    
    
                DatagramSocket server = new DatagramSocket(8888);
                DatagramPacket recvPacket = new DatagramPacket(new byte[MAXREV], MAXREV);
    
                while (true)
                {
                    server.receive(recvPacket);
    
                    byte[] receiveMsg = Arrays.copyOfRange(recvPacket.getData(),
                            recvPacket.getOffset(),
                            recvPacket.getOffset() + recvPacket.getLength());
                    System.out.println("    :" + new String(receiveMsg));
    
                    server.send(recvPacket);
    
                }
    
    
        }
    
        public static void main(String[] args) throws IOException {
    
            new Thread(()->{
                try {
                    received();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            ).start();
            sendMsg("nihao");
            sendMsg("kai lai le");
    
    
        }
    
    }
    

    参考資料:https://www.cnblogs.com/xujian2014/p/5072215.html