<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            java語言

            講解Java的Socket網絡編程的多播與廣播實現

            時間:2025-02-11 04:58:10 java語言 我要投稿
            • 相關推薦

            講解Java的Socket網絡編程的多播與廣播實現

              在Java中,我們可以有很多種方法來發送和接收數據。有的方法比較靠近底層,有些問題就需要程序員自己去解決,而有些方法抽象層次比較高,很方便地就可以拿來使用。這些處理數據的方法根據抽象層次由低到高分別有:

              1.手動編碼:使用位運算逐個自己編碼和解析。

              2.利用流來自動編碼:組合使用OutputStream和ByteArrayOutputStream。

              3.序列化:將數據放入一個數據對象中,直接將這個對象序列化后發送。

              使用起來很方便,但要注意效率的損失,以及接收方也要使用Java。

              4.RMI:將對方法的調用都發送過去了,直接實現了方法的遠程調用。

              在最底層的方法1中,我們需要自己解決一些底層的問題:

              1.整型的發送:要考慮是大尾端還是小尾端,是無符號的還是有符號的整數。

              2.字符串的發送:要考慮編碼問題。

              3.無長度限制的類型,如大整數:要編碼成幀Frame,通過定界符或者長度位

              來區分每幀。

              多播與廣播

              我們可以向每個接受者單播一個數據副本,但這樣做效率可能非常低。

              只有UDP套接字允許廣播和多播,兩者的區別是:廣播會發送到網絡上所有可達的

              主機,有些操作系統可能不允許普通用戶進行廣播操作;而多播只發送給感興趣的

              主機。具體來說是調用MulticastSocket的joinGroup()加入到多播組的主機。

              public class MulticastReceiverTest { public static void main(String[] args) throws Exception { final InetAddress address = InetAddress.getByName("224.1.1.1"); final int port = 45599; for (int i = 0; i < 5; i++) { new Thread("Thread #" + i){ @Override public void run() { try { MulticastSocket sock = new MulticastSocket(port); sock.joinGroup(address); byte[] msg = new byte[256]; DatagramPacket packet = new DatagramPacket(msg, msg.length); sock.receive(packet); System.out.println(Thread.currentThread().getName() + " receive: " + new String(packet.getData())); } catch (IOException e) { e.printStackTrace(); } } }.start(); } Thread.sleep(2000); MulticastSocket sock = new MulticastSocket(); sock.setTimeToLive(32); byte[] msg = "hellomulticast".getBytes(); DatagramPacket packet = new DatagramPacket(msg, msg.length, address, port); sock.send(packet); System.out.println("Message sent"); }}

            【講解Java的Socket網絡編程的多播與廣播實現】相關文章:

            java面向對象編程講解06-18

            Python的Socket 編程07-05

            Java如何通過Socket實現TCP服務端10-08

            Java多播套接字的方法08-10

            Java網絡基礎和Socket通信基礎10-25

            Java實現多繼承的實例07-18

            PHP Socket編程過程07-19

            如何運用Java socket實現多人聊天室功能11-06

            簡單講解Java的Future編程模式方案09-30

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院