private void OnConnect() { try { using (var client = _listener.AcceptSocket()) { byte[] buffer = null; try { if (client.Available == 0) { buffer = Encoding.Default.GetBytes(string.Empty); } else { int bi = 0; while (client.Available > 0) { Array.Resize(ref buffer, bi + 1); client.Receive(buffer, bi, 1, SocketFlags.None); bi += 1; } } } catch (IndexOutOfRangeException e) { OnError(new ErrorArgs(e)); } if (buffer != null) { var message = Encoding.Default.GetString(buffer); var rep = (IPEndPoint)client.RemoteEndPoint; // Verifico se ci sono messaggi nulli var args = new IncomingMessageArgs(message, rep.Address); OnMessageReceived(args); } } } catch (Exception ex) { OnError(new ErrorArgs(ex)); } }
/// <summary> /// /// </summary> /// <param name="e"></param> protected virtual void OnMessageReceived(IncomingMessageArgs e) { MessageReceived?.Invoke(this, e); }