Beispiel #1
0
        private void OnReceive(SocketAsyncEventArgs e)
        {
            string           message = Encoding.ASCII.GetString(e.Buffer, e.Offset, e.BytesTransferred);
            SimpleSocketData data    = new SimpleSocketData();

            data.Message = message;
            data.SimpleSocketEventArgs = e;
            // Console.WriteLine(message);
            OnMessageReceive(data);


            // Start for receiving if the socket is not already in receive mode from
            // ProcessSend() method. This can occure if the server only want to receive
            // data but not send anything in return. Although this is not very likely that is
            // gonna happen but who knows!
            try
            {
                bool willReaiseEvent = (e.UserToken as AsyncUserToken).Socket.ReceiveAsync(e);
                if (!willReaiseEvent)
                {
                    ProcessReceive(e);
                }
            }
            catch (Exception) { } // do nothing because the socket is already listening for incoming connection
        }
Beispiel #2
0
        public void SendMessage(SimpleSocketData data)
        {
            SocketAsyncEventArgs eventArgs = data.SimpleSocketEventArgs;
            string message = data.Message;

            if (null != message && message.Trim() != "")
            {
                // send the message
                byte[] buffer = Encoding.ASCII.GetBytes(message);

                eventArgs.SetBuffer(buffer, 0, message.Length);

                AsyncUserToken token          = eventArgs.UserToken as AsyncUserToken;
                bool           willRaiseEvent = token.Socket.SendAsync(eventArgs);
                if (!willRaiseEvent)
                {
                    ProcessSend(eventArgs);
                }
            }
        }
Beispiel #3
0
 public abstract void OnMessageReceive(SimpleSocketData data);