This commit is contained in:
Ziver Koc 2010-08-13 22:29:31 +00:00
parent 58a3113819
commit 02638fcb41
2 changed files with 17 additions and 14 deletions

View file

@ -6,13 +6,14 @@ import java.net.InetAddress;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import zutil.log.Logger; import zutil.io.StringOutputStream;
import zutil.log.LogUtil;
import zutil.network.http.HTTPHeaderParser; import zutil.network.http.HTTPHeaderParser;
import zutil.network.http.HttpPrintStream; import zutil.network.http.HttpPrintStream;
import zutil.network.threaded.ThreadedUDPNetwork; import zutil.network.threaded.ThreadedUDPNetwork;
import zutil.network.threaded.ThreadedUDPNetworkThread; import zutil.network.threaded.ThreadedUDPNetworkThread;
import zutil.wrapper.StringOutputStream;
/** /**
* An SSDP client class that will request * An SSDP client class that will request
@ -21,14 +22,15 @@ import zutil.wrapper.StringOutputStream;
* @author Ziver * @author Ziver
*/ */
public class SSDPClient extends ThreadedUDPNetwork implements ThreadedUDPNetworkThread{ public class SSDPClient extends ThreadedUDPNetwork implements ThreadedUDPNetworkThread{
public static final Logger logger = new Logger(); public static final Logger logger = LogUtil.getLogger();
// Contains all the received services // Contains all the received services
private HashMap<String, LinkedList<SSDPServiceInfo>> services_st; private HashMap<String, LinkedList<SSDPServiceInfo>> services_st;
private HashMap<String, SSDPServiceInfo> services_usn; private HashMap<String, SSDPServiceInfo> services_usn;
public static void main(String[] args) throws IOException{ public static void main(String[] args) throws IOException{
Logger.setGlobalLogLevel(Level.FINEST); System.out.println(LogUtil.getCalingClass());
LogUtil.setGlobalLogLevel(Level.FINEST);
SSDPClient ssdp = new SSDPClient(); SSDPClient ssdp = new SSDPClient();
ssdp.requestService("upnp:rootdevice"); ssdp.requestService("upnp:rootdevice");
ssdp.start(); ssdp.start();
@ -151,8 +153,8 @@ public class SSDPClient extends ThreadedUDPNetwork implements ThreadedUDPNetwork
HTTPHeaderParser header = new HTTPHeaderParser( new String( packet.getData() ) ); HTTPHeaderParser header = new HTTPHeaderParser( new String( packet.getData() ) );
logger.log(Level.FINEST, "*********** Recived\n"+header); logger.log(Level.FINEST, "*********** Recived\n"+header);
String usn = header.getHTTPAttribute("USN"); String usn = header.getHeader("USN");
String st = header.getHTTPAttribute("ST"); String st = header.getHeader("ST");
StandardSSDPInfo service; StandardSSDPInfo service;
// Get existing service // Get existing service
if( services_usn.containsKey( usn )){ if( services_usn.containsKey( usn )){
@ -164,15 +166,15 @@ public class SSDPClient extends ThreadedUDPNetwork implements ThreadedUDPNetwork
services_usn.put( usn, service); services_usn.put( usn, service);
if( !services_st.containsKey(st) ) if( !services_st.containsKey(st) )
services_st.put( st, new LinkedList<SSDPServiceInfo>() ); services_st.put( st, new LinkedList<SSDPServiceInfo>() );
services_st.get( header.getHTTPAttribute("ST") ).add( service ); services_st.get( header.getHeader("ST") ).add( service );
} }
service.setLocation( header.getHTTPAttribute("LOCATION") ); service.setLocation( header.getHeader("LOCATION") );
service.setST( st ); service.setST( st );
service.setUSN( usn ); service.setUSN( usn );
service.setExpirationTime( service.setExpirationTime(
System.currentTimeMillis() + System.currentTimeMillis() +
1000 * getCacheTime(header.getHTTPAttribute("Cache-Control")) ); 1000 * getCacheTime(header.getHeader("Cache-Control")) );
logger.log(Level.FINEST, "*********** Recived\n"+service); logger.log(Level.FINEST, "*********** Recived\n"+service);
} }

View file

@ -7,14 +7,15 @@ import java.util.HashMap;
import java.util.Timer; import java.util.Timer;
import java.util.TimerTask; import java.util.TimerTask;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger;
import zutil.MultiPrintStream; import zutil.MultiPrintStream;
import zutil.log.Logger; import zutil.io.StringOutputStream;
import zutil.log.LogUtil;
import zutil.network.http.HTTPHeaderParser; import zutil.network.http.HTTPHeaderParser;
import zutil.network.http.HttpPrintStream; import zutil.network.http.HttpPrintStream;
import zutil.network.threaded.ThreadedUDPNetworkThread; import zutil.network.threaded.ThreadedUDPNetworkThread;
import zutil.network.threaded.ThreadedUDPNetwork; import zutil.network.threaded.ThreadedUDPNetwork;
import zutil.wrapper.StringOutputStream;
/** /**
* A Server class that announces an service by the SSDP * A Server class that announces an service by the SSDP
@ -41,7 +42,7 @@ import zutil.wrapper.StringOutputStream;
* NTS: same as Man but for Notify messages * NTS: same as Man but for Notify messages
*/ */
public class SSDPServer extends ThreadedUDPNetwork implements ThreadedUDPNetworkThread{ public class SSDPServer extends ThreadedUDPNetwork implements ThreadedUDPNetworkThread{
public static final Logger logger = new Logger(); public static final Logger logger = LogUtil.getLogger();
public static final String SERVER_INFO = "SSDP Java Server by Ziver Koc"; public static final String SERVER_INFO = "SSDP Java Server by Ziver Koc";
public static final int DEFAULT_CACHE_TIME = 60*30; // 30 min public static final int DEFAULT_CACHE_TIME = 60*30; // 30 min
public static final int BUFFER_SIZE = 512; public static final int BUFFER_SIZE = 512;
@ -160,8 +161,8 @@ public class SSDPServer extends ThreadedUDPNetwork implements ThreadedUDPNetwork
// ******* Respond // ******* Respond
// Check that the message is an ssdp discovery message // Check that the message is an ssdp discovery message
if( header.getRequestType().equalsIgnoreCase("M-SEARCH") ){ if( header.getRequestType().equalsIgnoreCase("M-SEARCH") ){
String man = header.getHTTPAttribute("Man").replace("\"", ""); String man = header.getHeader("Man").replace("\"", "");
String st = header.getHTTPAttribute("ST"); String st = header.getHeader("ST");
// Check that its the correct URL and that its an ssdp:discover message // Check that its the correct URL and that its an ssdp:discover message
if( header.getRequestURL().equals("*") && man.equalsIgnoreCase("ssdp:discover") ){ if( header.getRequestURL().equals("*") && man.equalsIgnoreCase("ssdp:discover") ){
// Check if the requested service exists // Check if the requested service exists