讲解Java的Socket网络编程的多播与广播实现
来源:才华咖 本文已影响9.33K人
来源:才华咖 本文已影响9.33K人
在Java中,我们可以有很多种方法来发送和接收数据。有的方法比较靠近底层,有些问题就需要程序员自己去解决,而有些方法抽象层次比较高,很方便地就可以拿来使用。这些处理数据的方法根据抽象层次由低到高分别有:
1.手动编码:使用位运算逐个自己编码和解析。
2.利用流来自动编码:组合使用OutputStream和ByteArrayOutputStream。
3.序列化:将数据放入一个数据对象中,直接将这个对象序列化后发送。
使用起来很方便,但要注意效率的损失,以及接收方也要使用Java。
:将对方法的调用都发送过去了,直接实现了方法的远程调用。
在最底层的`方法1中,我们需要自己解决一些底层的问题:
1.整型的发送:要考虑是大尾端还是小尾端,是无符号的还是有符号的整数。
2.字符串的发送:要考虑编码问题。
3.无长度限制的类型,如大整数:要编码成帧Frame,通过定界符或者长度位
来区分每帧。
多播与广播
我们可以向每个接受者单播一个数据副本,但这样做效率可能非常低。
只有UDP套接字允许广播和多播,两者的区别是:广播会发送到网络上所有可达的
主机,有些操作系统可能不允许普通用户进行广播操作;而多播只发送给感兴趣的
主机。具体来说是调用MulticastSocket的joinGroup()加入到多播组的主机。
public class MulticastReceiverTest { public static void main(String[] args) throws Exception { final InetAddress address = yName(""); 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); Group(address); byte[] msg = new byte[256]; DatagramPacket packet = new DatagramPacket(msg, th); ive(packet); tln(entThread()ame() + " receive: " + new String(ata())); } catch (IOException e) { tStackTrace(); } } }t(); } p(2000); MulticastSocket sock = new MulticastSocket(); imeToLive(32); byte[] msg = "hellomulticast"ytes(); DatagramPacket packet = new DatagramPacket(msg, th, address, port); (packet); tln("Message sent"); }}
JavaScript中的style.cssText使用教程分解
如何解决Java Socket通信技术收发线程互斥
java与javascript之间json格式数据互转详解
Javasocket应用实例
Javascript实例教程如何使用HoTMetal
使用JavaScript实现Java的List功能
JavaScript中Cookie操作实际案例
Java中基于Aspectwerkz的AOP开发
Java Socket应答与HTTP服务器的关系
Java网络基础和Socket通信基础
解析Java编程中向量(Vector)的应用
Java中Socket设置连接超时的代码
关于javascript中cookie对象用法的实例分析
PPT职称考试“Shockwave Flash Object”控件法
javasocket服务端技巧
Chinas Liu to seek injury advice in US soon英语作文
用 Javascript 实现锚点(Anchor)间平滑跳转
私家车的坏处The Disadvantages of Private Cars英语作文
深入理解JS实现快速排序和去重javascript技巧
Java 多线程之synchronized关键字详解
JavaScript与Java的区别
java设置cookie方法流程
Java与JavaScript的区别
英语作文Never judge a book by its cover
java ClassLoader机制讲解
英语阅读:Tobacco Plant to Make Jet Fuel
未成年人网络直播的利与弊
Don’t Take the Age As an Excuse为题目的作文
如何正确实现Java中的hashCode方法
针对网络应用层实现多播的探析
关于 response方法的javascript asp教程第六课
java与JavaScript语言有何不同
网络直播的利与弊论文
JavaScript与java语言的区别
JavaScript与java语言有何不同
简单地分析Java线程编程中ThreadLocal类的使用
java中Cookie被禁用后Session追踪问题
JavaScript instanceof 的使用方法有哪些
Java并发编程:深入剖析ThreadLocal
广播电视编导实习