001package ball.upnp.ssdp; 002/*- 003 * ########################################################################## 004 * UPnP/SSDP Implementation Classes 005 * $Id: SSDPMulticastSocket.java 7215 2021-01-03 18:39:51Z ball $ 006 * $HeadURL: svn+ssh://svn.hcf.dev/var/spool/scm/repository.svn/ball-upnp/trunk/src/main/java/ball/upnp/ssdp/SSDPMulticastSocket.java $ 007 * %% 008 * Copyright (C) 2013 - 2021 Allen D. Ball 009 * %% 010 * Licensed under the Apache License, Version 2.0 (the "License"); 011 * you may not use this file except in compliance with the License. 012 * You may obtain a copy of the License at 013 * 014 * http://www.apache.org/licenses/LICENSE-2.0 015 * 016 * Unless required by applicable law or agreed to in writing, software 017 * distributed under the License is distributed on an "AS IS" BASIS, 018 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 019 * See the License for the specific language governing permissions and 020 * limitations under the License. 021 * ########################################################################## 022 */ 023import java.io.IOException; 024import java.net.InetSocketAddress; 025import java.net.MulticastSocket; 026import lombok.ToString; 027 028/** 029 * SSDP discovery {@link MulticastSocket} implementation. 030 * 031 * {@bean.info} 032 * 033 * @author {@link.uri mailto:ball@hcf.dev Allen D. Ball} 034 * @version $Revision: 7215 $ 035 */ 036@ToString 037public class SSDPMulticastSocket extends MulticastSocket { 038 private static final String ADDRESS = "239.255.255.250"; 039 private static final int PORT = 1900; 040 041 /** 042 * SSDP IPv4 multicast {@link InetSocketAddress}. 043 */ 044 public static final InetSocketAddress INET_SOCKET_ADDRESS = 045 new InetSocketAddress(ADDRESS, PORT); 046 047 /** 048 * Sole constructor. 049 */ 050 public SSDPMulticastSocket() throws IOException { 051 super(PORT); 052 053 setReuseAddress(true); 054 setLoopbackMode(false); 055 setTimeToLive(2); 056 joinGroup(INET_SOCKET_ADDRESS.getAddress()); 057 } 058}