예제 #1
0
        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));
            }
        }
예제 #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="e"></param>
 protected virtual void OnMessageReceived(IncomingMessageArgs e)
 {
     MessageReceived?.Invoke(this, e);
 }