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.LinkedList;
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.HttpPrintStream;
import zutil.network.threaded.ThreadedUDPNetwork;
import zutil.network.threaded.ThreadedUDPNetworkThread;
import zutil.wrapper.StringOutputStream;
/**
* An SSDP client class that will request
@ -21,14 +22,15 @@ import zutil.wrapper.StringOutputStream;
* @author Ziver
*/
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
private HashMap<String, LinkedList<SSDPServiceInfo>> services_st;
private HashMap<String, SSDPServiceInfo> services_usn;
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();
ssdp.requestService("upnp:rootdevice");
ssdp.start();
@ -151,8 +153,8 @@ public class SSDPClient extends ThreadedUDPNetwork implements ThreadedUDPNetwork
HTTPHeaderParser header = new HTTPHeaderParser( new String( packet.getData() ) );
logger.log(Level.FINEST, "*********** Recived\n"+header);
String usn = header.getHTTPAttribute("USN");
String st = header.getHTTPAttribute("ST");
String usn = header.getHeader("USN");
String st = header.getHeader("ST");
StandardSSDPInfo service;
// Get existing service
if( services_usn.containsKey( usn )){
@ -164,15 +166,15 @@ public class SSDPClient extends ThreadedUDPNetwork implements ThreadedUDPNetwork
services_usn.put( usn, service);
if( !services_st.containsKey(st) )
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.setUSN( usn );
service.setExpirationTime(
System.currentTimeMillis() +
1000 * getCacheTime(header.getHTTPAttribute("Cache-Control")) );
1000 * getCacheTime(header.getHeader("Cache-Control")) );
logger.log(Level.FINEST, "*********** Recived\n"+service);
}

View file

@ -7,14 +7,15 @@ import java.util.HashMap;
import java.util.Timer;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import zutil.MultiPrintStream;
import zutil.log.Logger;
import zutil.io.StringOutputStream;
import zutil.log.LogUtil;
import zutil.network.http.HTTPHeaderParser;
import zutil.network.http.HttpPrintStream;
import zutil.network.threaded.ThreadedUDPNetworkThread;
import zutil.network.threaded.ThreadedUDPNetwork;
import zutil.wrapper.StringOutputStream;
/**
* 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
*/
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 int DEFAULT_CACHE_TIME = 60*30; // 30 min
public static final int BUFFER_SIZE = 512;
@ -160,8 +161,8 @@ public class SSDPServer extends ThreadedUDPNetwork implements ThreadedUDPNetwork
// ******* Respond
// Check that the message is an ssdp discovery message
if( header.getRequestType().equalsIgnoreCase("M-SEARCH") ){
String man = header.getHTTPAttribute("Man").replace("\"", "");
String st = header.getHTTPAttribute("ST");
String man = header.getHeader("Man").replace("\"", "");
String st = header.getHeader("ST");
// Check that its the correct URL and that its an ssdp:discover message
if( header.getRequestURL().equals("*") && man.equalsIgnoreCase("ssdp:discover") ){
// Check if the requested service exists