ClientIP Property

Summary
Retrieves the IP address of the client that made the request.
Syntax
C#
C++/CLI
[DispIdAttribute(2)] 
public string ClientIP { get; } 
property String^ ClientIP { 
   String^ get(); 
} 

Property Value

A string that represents the IP address of the client that made the request.

Remarks

If the method fails, an error is raised. For more information, refer to the Error Codes.

Example
C#
using Leadtools; 
using Leadtools.MediaStreaming; 
 
 
 
enum W3CLOG 
{ 
   date = 0x00000001, 
   time = 0x00000002, 
   c_ip = 0x00000004, 
   cs_username = 0x00000008, 
   s_sitename = 0x00000010, 
   s_computername = 0x00000020, 
   s_ip = 0x00000040, 
   s_port = 0x00000080, 
   cs_method = 0x00000100, 
   cs_uri_stem = 0x00000200, 
   cs_uri_query = 0x00000400, 
   sc_status = 0x00000800, 
   sc_win32_status = 0x00001000, 
   sc_bytes = 0x00002000, 
   cs_bytes = 0x00004000, 
   time_taken = 0x00008000, 
   cs_version = 0x00010000, 
   cs_host = 0x00020000, 
   cs_user_agent = 0x00040000, 
   cs_cookie = 0x00080000, 
   cs_referer = 0x00100000, 
   sc_substatus = 0x00200000, 
}; 
 
public class CW3CLogHandler : ILtmsLogHandler 
{ 
   bool m_enable; 
   int m_fields; 
   bool m_localtime; 
   DateTime m_dtfile; 
   string m_software; 
   string m_folder; 
   string m_prefix; 
   StreamWriter m_sw; 
 
   public CW3CLogHandler(string prefix, string software, bool enable, string folder, int fields, bool localtime) 
   { 
      m_prefix = prefix; 
      m_software = software; 
      m_enable = enable; 
      m_folder = folder; 
      m_fields = fields; 
      m_localtime = localtime; 
   } 
   ~CW3CLogHandler() 
   { 
 
   } 
 
   void WriteString(string str) 
   { 
      m_sw.Write(str); 
   } 
 
   DateTime GetTime(double dTime) 
   { 
      DateTime dt = DateTime.FromOADate(dTime); 
 
      if (m_localtime) 
         return dt.ToLocalTime(); 
 
      return dt; 
   } 
 
   string GetLogPath(double timestamp) 
   { 
      DateTime dt = GetTime(timestamp); 
      string strFullPath; 
 
      try 
      { 
         PathResolver resolver = new PathResolver(); 
         strFullPath = resolver.Resolve(m_folder); 
      } 
      catch 
      { 
         return ""; 
      } 
 
      strFullPath += "\\"; 
      strFullPath += m_prefix; 
 
      if (!m_localtime) 
      { 
         strFullPath += dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") + "UTC.log"; 
      } 
      else 
      { 
         strFullPath += dt.ToString("y-MM-dd-HH-mm-ss").Replace("-", "") + ".log"; 
      } 
 
      return strFullPath; 
   } 
 
   public void LoadConfig(Server server) 
   { 
      bool enable = m_enable; 
      bool localtime = m_localtime; 
      string folder = m_folder; 
      int fields = m_fields; 
      bool dirty = false; 
 
      ApplicationProperties AppProps = server.GetApplicationProperties(); 
 
      try 
      { 
         enable = AppProps.GetBoolean("LogEnable"); 
      } 
      catch 
      { 
         AppProps.AddBoolean("LogEnable", enable); 
         dirty = true; 
      } 
 
      try 
      { 
         localtime = AppProps.GetBoolean("LogLocalTime"); 
      } 
      catch 
      { 
         AppProps.AddBoolean("LogLocalTime", localtime); 
         dirty = true; 
      } 
 
      try 
      { 
         folder = AppProps.GetString("LogFolder"); 
      } 
      catch 
      { 
         AppProps.AddString("LogFolder", folder); 
         dirty = true; 
      } 
 
      try 
      { 
         fields = AppProps.GetInteger("LogFields"); 
      } 
      catch 
      { 
         AppProps.AddInteger("LogFields", fields); 
         dirty = true; 
      } 
 
      if (dirty) 
         server.SetApplicationProperties(AppProps); 
 
      // if anything has changed then we need to close the current file 
      if (!enable && (string.Compare(m_folder, folder, true) != 0) || fields != m_fields || m_localtime != localtime) 
      { 
         if (m_sw != null) 
            m_sw.Close(); 
      } 
 
      m_folder = folder; 
      m_localtime = localtime; 
      m_enable = enable; 
      m_fields = fields; 
   } 
 
   bool CreateLog(double timestamp) 
   { 
      if (m_sw != null) 
         m_sw.Close(); 
 
      if (!m_enable) 
         return false; 
 
      try 
      { 
         m_sw = File.CreateText(GetLogPath(timestamp)); 
      } 
      catch 
      { 
         return false; 
      } 
 
      m_dtfile = GetTime(timestamp); 
 
      string s; 
      s = "#Software: " + m_software + "\r\n"; 
      WriteString(s); 
      WriteString("#Version: 1.0\r\n"); 
      DateTime dt = GetTime(timestamp); 
      s = "#Date: " + dt.ToString("yyyy-MM-dd HH:mm:ss") + "\r\n"; 
      WriteString(s); 
 
      s = "#Fields:"; 
 
      if ((m_fields & (int)W3CLOG.date) == (int)W3CLOG.date) 
      { 
         s += " date"; 
      } 
      if ((m_fields & (int)W3CLOG.time) == (int)W3CLOG.time) 
      { 
         s += " time"; 
      } 
      if ((m_fields & (int)W3CLOG.s_sitename) == (int)W3CLOG.s_sitename) 
      { 
         s += " s-sitename"; 
      } 
      if ((m_fields & (int)W3CLOG.s_computername) == (int)W3CLOG.s_computername) 
      { 
         s += " s-computername"; 
      } 
      if ((m_fields & (int)W3CLOG.s_ip) == (int)W3CLOG.s_ip) 
      { 
         s += " s-ip"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_method) == (int)W3CLOG.cs_method) 
      { 
         s += " cs-method"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_uri_stem) == (int)W3CLOG.cs_uri_stem) 
      { 
         s += " cs-uri-stem"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_uri_query) == (int)W3CLOG.cs_uri_query) 
      { 
         s += " cs-uri-query"; 
      } 
      if ((m_fields & (int)W3CLOG.s_port) == (int)W3CLOG.s_port) 
      { 
         s += " s-port"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_username) == (int)W3CLOG.cs_username) 
      { 
         s += " cs-username"; 
      } 
      if ((m_fields & (int)W3CLOG.c_ip) == (int)W3CLOG.c_ip) 
      { 
         s += " c-ip"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_version) == (int)W3CLOG.cs_version) 
      { 
         s += " cs-version"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_user_agent) == (int)W3CLOG.cs_user_agent) 
      { 
         s += " cs(User-Agent)"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_cookie) == (int)W3CLOG.cs_cookie) 
      { 
         s += " cs(Cookie)"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_referer) == (int)W3CLOG.cs_referer) 
      { 
         s += " cs(Referer)"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_host) == (int)W3CLOG.cs_host) 
      { 
         s += " cs-host"; 
      } 
      if ((m_fields & (int)W3CLOG.sc_status) == (int)W3CLOG.sc_status) 
      { 
         s += " sc-status"; 
      } 
      if ((m_fields & (int)W3CLOG.sc_substatus) == (int)W3CLOG.sc_substatus) 
      { 
         s += " sc-substatus"; 
      } 
      if ((m_fields & (int)W3CLOG.sc_win32_status) == (int)W3CLOG.sc_win32_status) 
      { 
         s += " sc-win32-status"; 
      } 
      if ((m_fields & (int)W3CLOG.sc_bytes) == (int)W3CLOG.sc_bytes) 
      { 
         s += " sc-bytes"; 
      } 
      if ((m_fields & (int)W3CLOG.cs_bytes) == (int)W3CLOG.cs_bytes) 
      { 
         s += " cs-bytes"; 
      } 
      if ((m_fields & (int)W3CLOG.time_taken) == (int)W3CLOG.time_taken) 
      { 
         s += " time-taken"; 
      } 
      s += "\r\n"; 
      WriteString(s); 
 
      m_sw.Flush(); 
 
      return true; 
   } 
 
   string escape(string s) 
   { 
      string t = ""; 
      foreach (char c in s) 
      { 
         if (!char.IsControl(c) && !char.IsWhiteSpace(c)) 
            t += c; 
         else 
            t += "+"; 
      } 
 
      return t; 
   } 
 
   public void InitializeLog(double timestamp) 
   { 
      CreateLog(timestamp); 
   } 
 
   public void TerminateLog() 
   { 
      if (m_sw != null) 
         m_sw.Close(); 
   } 
 
   public void LogInformation(ILtmsLogInformation info) 
   { 
      string s = ""; 
 
      if (!m_enable) 
         return; 
 
      // check if we need to roll to a new file 
      { 
         DateTime dt = GetTime(info.TimeStamp); 
 
         if (m_sw == null || dt.Day != m_dtfile.Day || dt.Month != m_dtfile.Month || dt.Year != m_dtfile.Year) 
         { 
            if (!CreateLog(info.TimeStamp)) 
               return; 
         } 
      } 
      if ((m_fields & (int)W3CLOG.date) == (int)W3CLOG.date) 
      { 
         DateTime dt = GetTime(info.TimeStamp); 
 
         if (s.Length > 0) 
            s += " "; 
         s += dt.ToString("yyyy-MM-dd"); 
      } 
      if ((m_fields & (int)W3CLOG.time) == (int)W3CLOG.time) 
      { 
         DateTime dt = GetTime(info.TimeStamp); 
 
         if (s.Length > 0) 
            s += " "; 
         s += dt.ToString("HH:mm:ss"); 
      } 
      if ((m_fields & (int)W3CLOG.s_sitename) == (int)W3CLOG.s_sitename) 
      { 
         string str = info.SiteName; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
 
      } 
      if ((m_fields & (int)W3CLOG.s_computername) == (int)W3CLOG.s_computername) 
      { 
         string str = info.ComputerName; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.s_ip) == (int)W3CLOG.s_ip) 
      { 
         string str = info.ServerIP; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_method) == (int)W3CLOG.cs_method) 
      { 
         string str = info.Method; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_uri_stem) == (int)W3CLOG.cs_uri_stem) 
      { 
         string str = info.URIStem; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_uri_query) == (int)W3CLOG.cs_uri_query) 
      { 
         string str = info.URIQuery; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.s_port) == (int)W3CLOG.s_port) 
      { 
         int n = info.ServerPort; 
         if (s.Length > 0) 
            s += " "; 
         s += n.ToString(); 
      } 
      if ((m_fields & (int)W3CLOG.cs_username) == (int)W3CLOG.cs_username) 
      { 
         string str = info.UserName; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.c_ip) == (int)W3CLOG.c_ip) 
      { 
         string str = info.ClientIP; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_version) == (int)W3CLOG.cs_version) 
      { 
         string str = info.ProtocolVersion; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_user_agent) == (int)W3CLOG.cs_user_agent) 
      { 
         string str = info.UserAgent; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_cookie) == (int)W3CLOG.cs_cookie) 
      { 
         string str = info.Cookie; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_referer) == (int)W3CLOG.cs_referer) 
      { 
         string str = info.Referrer; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.cs_host) == (int)W3CLOG.cs_host) 
      { 
         string str = info.Host; 
         if (s.Length > 0) 
            s += " "; 
         if (str.Length == 0) 
            s += "-"; 
         else 
            s += escape(str); 
      } 
      if ((m_fields & (int)W3CLOG.sc_status) == (int)W3CLOG.sc_status) 
      { 
         int n = info.Status; 
         if (s.Length > 0) 
            s += " "; 
         s += n.ToString(); 
      } 
      if ((m_fields & (int)W3CLOG.sc_substatus) == (int)W3CLOG.sc_substatus) 
      { 
         int n = info.ProtocolSubStatus; 
         if (s.Length > 0) 
            s += " "; 
         s += n.ToString(); 
      } 
      if ((m_fields & (int)W3CLOG.sc_win32_status) == (int)W3CLOG.sc_win32_status) 
      { 
         int n = info.Win32Status; 
         if (s.Length > 0) 
            s += " "; 
         s += n.ToString(); 
      } 
      if ((m_fields & (int)W3CLOG.sc_bytes) == (int)W3CLOG.sc_bytes) 
      { 
         int n = info.BytesSent; 
         if (s.Length > 0) 
            s += " "; 
         if (n < 0) 
            s += "-"; 
         else 
            s += n.ToString(); 
      } 
      if ((m_fields & (int)W3CLOG.cs_bytes) == (int)W3CLOG.cs_bytes) 
      { 
         int n = info.BytesReceived; 
         if (s.Length > 0) 
            s += " "; 
         if (n < 0) 
            s += "-"; 
         else 
            s += n.ToString(); 
      } 
      if ((m_fields & (int)W3CLOG.time_taken) == (int)W3CLOG.time_taken) 
      { 
         int n = info.TimeTaken; 
         if (s.Length > 0) 
            s += " "; 
         if (n < 0) 
            s += "-"; 
         else 
            s += n.ToString(); 
      } 
 
      s += "\r\n"; 
      WriteString(s); 
      m_sw.Flush(); 
   } 
} 
 
 
public Server _server = null; 
public bool _result = false; 
 
public void W3CLogHandlerExample() 
{ 
   try 
   { 
      State enumState; 
      CW3CLogHandler _loghandler; 
 
      // create an instance of the server object 
      _server = new Leadtools.MediaStreaming.Server(); 
 
      // create the log handler 
      _loghandler = new CW3CLogHandler("ltmsServer_", "LEADTOOLS Media Streaming Server", true, "%ltmsLogFolder%", 0, false); 
 
      // set the log handler 
      _server.ILogHandler = _loghandler; 
 
      { 
         // for demonstration, compare the interface we just set 
         ILtmsLogHandler ihandler = null; 
         ihandler = _server.ILogHandler; 
 
         if (ihandler != (ILtmsLogHandler)_loghandler) 
         { 
            _result = false; 
            return; 
         } 
      } 
 
      // Run with the server's default settings 
      // or uncomment this section to load the config file located in the config subfolder under the executable folder 
      //_server.ImportConfigFile("%ltmsConfigFolder%\\LeadtoolsMediaStreamingServer.xml"); 
 
      // start the server 
      _server.Start(); 
 
      // confirm the running state for demonstration purposes 
      enumState = _server.State; 
 
      if (enumState == State.Started) 
      { 
         // display a message that the server is running and wait for OK 
         MessageBox.Show("The server has started. Press OK to stop.", "LEADTOOLS Media Streaming Examples", MessageBoxButtons.OK, MessageBoxIcon.Information); 
      } 
 
      // stop the server 
      _server.Stop(); 
 
      // remove the log handler 
      _server.ILogHandler = null; 
 
      _result = true; 
   } 
   catch (Exception) 
   { 
      _result = false; 
   } 
} 
Requirements

Target Platforms

Help Version 22.0.2022.12.7
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.MediaStreaming Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.