📄 simplemulticastserver.java
字号:
package net.sf.dz.pnp.custom;import java.net.DatagramPacket;import java.net.InetAddress;import java.net.MulticastSocket;import java.util.Iterator;import java.util.LinkedList;import java.util.List;import org.freehold.jukebox.logger.LogChannel;import net.sf.dz.pnp.MulticastServer;import net.sf.dz.util.MessageDigestFactory;/** * @author Copyright © <a href="mailto:vt@freehold.crocodile.org">Vadim Tkachenko</a> 2004 * @version $Id: SimpleMulticastServer.java,v 1.2 2004/06/28 20:35:49 vtt Exp $ */public class SimpleMulticastServer extends MulticastServer { public static final LogChannel CH_SMS = new LogChannel("SimpleMulticastServer"); private MulticastSocket socket; private InetAddress group; protected void startup() throws Throwable { group = InetAddress.getByName("239.192.0.1"); // Let's check if the address has proper scope. Since there are many // checks to be done, let's make them all, collect the results and // report them all at once. List error = new LinkedList(); if ( !group.isMulticastAddress() ) { error.add("Not a multicast address"); } if ( !group.isMCSiteLocal() ) { error.add("Not a site local address"); } if ( !group.isMCOrgLocal() ) { error.add("Not an organization local address"); } if ( !error.isEmpty() ) { complain(LOG_WARNING, CH_SMS, "Problems reported for " + group + " (total of " + error.size() + "), code may not work as intended:"); for ( Iterator i = error.iterator(); i.hasNext(); ) { complain(LOG_WARNING, CH_SMS, i.next()); } } socket = new MulticastSocket(5001); // The multicast scope is "site" socket.setTimeToLive(15); socket.joinGroup(group); complain(LOG_INFO, CH_SMS, "Announcing on " + group + ":5001"); } protected void shutdown(Throwable cause) throws Throwable { socket.leaveGroup(group); } protected void announce() throws Throwable { String payload = getMessage(); if ( payload == null ) { // This shouldn't have happened, but anyway... return; } String md = new MessageDigestFactory().getSHA(payload); String message = "SHA{" + md + "} " + payload; byte data[] = message.getBytes(); DatagramPacket packet = new DatagramPacket(data, message.length(), group, 5001); socket.send(packet); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -