av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

java語言

講解Java的Socket網(wǎng)絡(luò)編程的多播與廣播實(shí)現(xiàn)

時(shí)間:2025-02-11 04:58:10 java語言 我要投稿
  • 相關(guān)推薦

講解Java的Socket網(wǎng)絡(luò)編程的多播與廣播實(shí)現(xiàn)

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

  1.手動(dòng)編碼:使用位運(yùn)算逐個(gè)自己編碼和解析。

  2.利用流來自動(dòng)編碼:組合使用OutputStream和ByteArrayOutputStream。

  3.序列化:將數(shù)據(jù)放入一個(gè)數(shù)據(jù)對(duì)象中,直接將這個(gè)對(duì)象序列化后發(fā)送。

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

  4.RMI:將對(duì)方法的調(diào)用都發(fā)送過去了,直接實(shí)現(xiàn)了方法的遠(yuǎn)程調(diào)用。

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

  1.整型的發(fā)送:要考慮是大尾端還是小尾端,是無符號(hào)的還是有符號(hào)的整數(shù)。

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

  3.無長度限制的類型,如大整數(shù):要編碼成幀F(xiàn)rame,通過定界符或者長度位

  來區(qū)分每幀。

  多播與廣播

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

  只有UDP套接字允許廣播和多播,兩者的區(qū)別是:廣播會(huì)發(fā)送到網(wǎng)絡(luò)上所有可達(dá)的

  主機(jī),有些操作系統(tǒng)可能不允許普通用戶進(jìn)行廣播操作;而多播只發(fā)送給感興趣的

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

  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網(wǎng)絡(luò)編程的多播與廣播實(shí)現(xiàn)】相關(guān)文章:

java面向?qū)ο缶幊讨v解06-18

Python的Socket 編程07-05

Java如何通過Socket實(shí)現(xiàn)TCP服務(wù)端10-08

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

Java網(wǎng)絡(luò)基礎(chǔ)和Socket通信基礎(chǔ)10-25

Java實(shí)現(xiàn)多繼承的實(shí)例07-18

PHP Socket編程過程07-19

如何運(yùn)用Java socket實(shí)現(xiàn)多人聊天室功能11-06

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