private Boolean SendEventByTCP(String message, String eventLogName, EventLogEntry eventLogEntry, Filter filter)
{
IPAddress[] ServersAddress;
// Create syslog tag and remove syslog message accents
Int32 pri = (int)Facility[filter.SyslogFacility.ToLower()] * 8 + (int)Level[filter.SyslogLevel.ToLower()];
string month = eventLogEntry.TimeWritten.ToString("MMM", DateTimeFormatInfo.InvariantInfo);
string day = eventLogEntry.TimeWritten.ToString("dd", DateTimeFormatInfo.InvariantInfo);
if (Convert.ToInt32(day) < 10)
{
day = " " + Convert.ToInt32(day);
}
string date = month + " " + day + " " + eventLogEntry.TimeWritten.ToString("HH:mm:ss", DateTimeFormatInfo.InvariantInfo);
String body = "<" + pri + ">" + date + " " + eventLogEntry.MachineName + " " + message + "\n";
// Convert final message in bytes
byte[] rawMsg = Encoding.Default.GetBytes(body);
try
{
ServersAddress = Dns.GetHostAddresses(this._ServerAddress);
//String temp = ServersAddress.GetValue(0).ToString();
for (int i = 0; i < ServersAddress.Length; i++)
{
//Try to send message by TCP
TcpClient tcp;
NetworkStream flux;
try
{
tcp = new TcpClient(ServersAddress.GetValue(i).ToString(), this._ServerPort);
if (tcp.Connected)
{
flux = tcp.GetStream();
if (flux.CanWrite)
{
flux.Write(rawMsg, 0, rawMsg.Length);
this._Debug.Write("Syslog Server", "Event send to: " + ServersAddress.GetValue(i).ToString() + " with message: " + message, DateTime.Now, 2);
flux.Close();
tcp.Close();
tcp = null;
}
else
{
SetMessageInBuffer(body);
}
}
else
{
SetMessageInBuffer(body);
}
}
catch (SocketException e)
{
SetMessageInBuffer(body);
}
catch (ArgumentNullException e)
{
this._Debug.Write("Syslog Server", "ArgumentNullException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (ArgumentOutOfRangeException e)
{
this._Debug.Write("Syslog Server", "ArgumentOutOfRangeException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (ObjectDisposedException e)
{
this._Debug.Write("Syslog Server", "ObjectDisposedException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (System.IO.IOException e)
{
SetMessageInBuffer(body);
}
}
}
catch (SocketException e)
{
this._Debug.Write("Syslog Server", "SocketException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (ArgumentNullException e)
{
this._Debug.Write("Syslog Server", "ArgumentNullException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (ArgumentOutOfRangeException e)
{
this._Debug.Write("Syslog Server", "ArgumentOutOfRangeException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (ObjectDisposedException e)
{
this._Debug.Write("Syslog Server", "ObjectDisposedException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
catch (InvalidOperationException e)
{
this._Debug.Write("Syslog Server", "InvalidOperationException caught because: " + e.Message, DateTime.Now, 1);
return false;
}
return true;
}