DTLib/DTLib.Network/TCPSocketClient.cs
2023-10-12 13:31:10 +06:00

45 lines
1.2 KiB
C#

using System.Net;
namespace DTLib.Network;
public class TCPSocketClient : IDisposable
{
protected Socket? _mainSocket;
public readonly IPEndPoint ServerEndpoint;
public TCPSocketClient(IPEndPoint serverEndpoint)
{
ServerEndpoint = serverEndpoint;
}
public virtual void Connect()
{
_mainSocket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
_mainSocket.Connect(ServerEndpoint);
}
public virtual void Stop()
{
if(_mainSocket is null)
return;
_mainSocket.Shutdown(SocketShutdown.Both);
_mainSocket.Close();
_mainSocket = null;
}
public void Dispose() => Stop();
public void Send(byte[] buffer)
{
if (_mainSocket is null)
throw new NullReferenceException("TCP socket is null! You have to call Connect() befure calling Send()");
_mainSocket.Send(buffer);
}
public int Recieve(ref byte[] buffer)
{
if (_mainSocket is null)
throw new NullReferenceException("TCP socket is null! You have to call Connect() befure calling Recieve()");
_mainSocket.Receive(buffer);
}
}