public void Connect(IPEndPoint ip) { try { ClientSocket.BeginConnect(ip, ClientConnected, ClientSocket); } catch (Exception e) { OnErrorHandled?.Invoke(e); } }
public void Receive() { try { ClientSocket.BeginReceive(ReceivedBuffer, 0, ReceivedBuffer.Length, SocketFlags.None, DataReceived, ClientSocket); } catch (Exception e) { OnErrorHandled?.Invoke(e); } }
public void Send(byte[] data) { try { SentBuffer = data; ClientSocket.BeginSend(SentBuffer, 0, SentBuffer.Length, SocketFlags.None, SentData, ClientSocket); } catch (Exception e) { OnErrorHandled?.Invoke(e); } }
public void Disconnect() { try { if (IsRunning) { ClientSocket.BeginDisconnect(false, ClientDisconnected, ClientSocket); _leaveRequest = true; } } catch (Exception e) { OnErrorHandled?.Invoke(e); } }
private void ClientJoined(IAsyncResult ar) { try { ServerSocket = (Socket)ar.AsyncState; T client = (T)Activator.CreateInstance(typeof(T), ServerSocket.EndAccept(ar)); client.OnClientDisconnected += () => { OnClientLeaved?.Invoke(client); Clients.Remove(client); }; OnClientJoined?.Invoke(client); client.Receive(); Clients.Add(client); AcceptClient(); } catch (Exception e) { OnErrorHandled?.Invoke(e); } }