Updated
This commit is contained in:
@@ -12,6 +12,7 @@ public class Syslog : IDisposable
|
||||
{
|
||||
private string _Hostname = "127.0.0.1";
|
||||
private int _Port = 514;
|
||||
private bool IsConnected { get; set; }
|
||||
|
||||
internal UdpClient Udp;
|
||||
|
||||
@@ -56,14 +57,23 @@ public class Syslog : IDisposable
|
||||
|
||||
private void SetUdp()
|
||||
{
|
||||
DisposeUdp();
|
||||
Udp = new UdpClient(_Hostname, _Port);
|
||||
try
|
||||
{
|
||||
DisposeUdp();
|
||||
Udp = new UdpClient(_Hostname, _Port);
|
||||
IsConnected = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
IsConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void DisposeUdp()
|
||||
{
|
||||
if (Udp != null)
|
||||
{
|
||||
IsConnected = false;
|
||||
Udp.Dispose();
|
||||
Udp = null;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
private int _Port = 514;
|
||||
internal TcpClient _tcp;
|
||||
|
||||
private bool IsConnected { get; set; }
|
||||
public string Nickname { get; set; }
|
||||
public string IpPort => _Hostname + ":" + _Port;
|
||||
|
||||
@@ -52,14 +53,23 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
|
||||
internal void SetTcp()
|
||||
{
|
||||
DisposeTcp();
|
||||
_tcp = new TcpClient(_Hostname, _Port);
|
||||
try
|
||||
{
|
||||
DisposeTcp();
|
||||
_tcp = new TcpClient(_Hostname, _Port);
|
||||
IsConnected = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
IsConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
internal void DisposeTcp()
|
||||
{
|
||||
if (_tcp != null)
|
||||
{
|
||||
IsConnected = false;
|
||||
_tcp.Close();
|
||||
_tcp.Dispose();
|
||||
_tcp = null;
|
||||
@@ -84,9 +94,17 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
return;
|
||||
}
|
||||
|
||||
using var stream = _tcp.GetStream();
|
||||
await stream.WriteAsync(data, 0, data.Length);
|
||||
await stream.FlushAsync();
|
||||
if (!IsConnected)
|
||||
{
|
||||
SetTcp();
|
||||
}
|
||||
|
||||
if (IsConnected)
|
||||
{
|
||||
using var stream = _tcp.GetStream();
|
||||
await stream.WriteAsync(data, 0, data.Length);
|
||||
await stream.FlushAsync();
|
||||
}
|
||||
}
|
||||
|
||||
internal async Task WriteAsync(string data)
|
||||
@@ -101,10 +119,18 @@ namespace EonaCat.Logger.Servers.Tcp
|
||||
return;
|
||||
}
|
||||
|
||||
var sendData = Encoding.UTF8.GetBytes(data);
|
||||
using var stream = _tcp.GetStream();
|
||||
await stream.WriteAsync(sendData, 0, sendData.Length);
|
||||
await stream.FlushAsync();
|
||||
if (!IsConnected)
|
||||
{
|
||||
SetTcp();
|
||||
}
|
||||
|
||||
if (IsConnected)
|
||||
{
|
||||
var sendData = Encoding.UTF8.GetBytes(data);
|
||||
using var stream = _tcp.GetStream();
|
||||
await stream.WriteAsync(sendData, 0, sendData.Length);
|
||||
await stream.FlushAsync();
|
||||
}
|
||||
}
|
||||
|
||||
~Tcp()
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
private int _Port = 514;
|
||||
internal UdpClient _udp;
|
||||
|
||||
private bool IsConnected { get; set; }
|
||||
public string Nickname { get; set; }
|
||||
public string IpPort => _Hostname + ":" + _Port;
|
||||
|
||||
@@ -53,14 +54,23 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
|
||||
internal void SetUdp()
|
||||
{
|
||||
DisposeUdp();
|
||||
_udp = new UdpClient(_Hostname, _Port);
|
||||
try
|
||||
{
|
||||
DisposeUdp();
|
||||
_udp = new UdpClient(_Hostname, _Port);
|
||||
IsConnected = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
IsConnected = false;
|
||||
}
|
||||
}
|
||||
|
||||
internal void DisposeUdp()
|
||||
{
|
||||
if (_udp != null)
|
||||
{
|
||||
IsConnected = false;
|
||||
_udp.Dispose();
|
||||
_udp = null;
|
||||
}
|
||||
@@ -79,19 +89,27 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
return;
|
||||
}
|
||||
|
||||
_udp.DontFragment = dontFragment;
|
||||
|
||||
int maxChunkSize = MaxUdpPacketSize;
|
||||
int offset = 0;
|
||||
|
||||
while (offset < data.Length)
|
||||
if (!IsConnected)
|
||||
{
|
||||
int chunkSize = Math.Min(maxChunkSize, data.Length - offset);
|
||||
byte[] chunk = new byte[chunkSize];
|
||||
Array.Copy(data, offset, chunk, 0, chunkSize);
|
||||
SetUdp();
|
||||
}
|
||||
|
||||
await _udp.SendAsync(chunk, chunk.Length);
|
||||
offset += chunkSize;
|
||||
if (IsConnected)
|
||||
{
|
||||
_udp.DontFragment = dontFragment;
|
||||
|
||||
int maxChunkSize = MaxUdpPacketSize;
|
||||
int offset = 0;
|
||||
|
||||
while (offset < data.Length)
|
||||
{
|
||||
int chunkSize = Math.Min(maxChunkSize, data.Length - offset);
|
||||
byte[] chunk = new byte[chunkSize];
|
||||
Array.Copy(data, offset, chunk, 0, chunkSize);
|
||||
|
||||
await _udp.SendAsync(chunk, chunk.Length);
|
||||
offset += chunkSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,20 +120,28 @@ namespace EonaCat.Logger.Servers.Udp
|
||||
return;
|
||||
}
|
||||
|
||||
var sendData = Encoding.UTF8.GetBytes(data);
|
||||
_udp.DontFragment = dontFragment;
|
||||
|
||||
int maxChunkSize = MaxUdpPacketSize;
|
||||
int offset = 0;
|
||||
|
||||
while (offset < sendData.Length)
|
||||
if (!IsConnected)
|
||||
{
|
||||
int chunkSize = Math.Min(maxChunkSize, sendData.Length - offset);
|
||||
byte[] chunk = new byte[chunkSize];
|
||||
Array.Copy(sendData, offset, chunk, 0, chunkSize);
|
||||
SetUdp();
|
||||
}
|
||||
|
||||
await _udp.SendAsync(chunk, chunk.Length);
|
||||
offset += chunkSize;
|
||||
if (IsConnected)
|
||||
{
|
||||
var sendData = Encoding.UTF8.GetBytes(data);
|
||||
_udp.DontFragment = dontFragment;
|
||||
|
||||
int maxChunkSize = MaxUdpPacketSize;
|
||||
int offset = 0;
|
||||
|
||||
while (offset < sendData.Length)
|
||||
{
|
||||
int chunkSize = Math.Min(maxChunkSize, sendData.Length - offset);
|
||||
byte[] chunk = new byte[chunkSize];
|
||||
Array.Copy(sendData, offset, chunk, 0, chunkSize);
|
||||
|
||||
await _udp.SendAsync(chunk, chunk.Length);
|
||||
offset += chunkSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user