예제 #1
0
 // Invoke the ResponseReceived event
 protected void OnResponseReceived(ResponseReceivedEventArgs e)
 {
     if (ResponseReceived != null)
     {
         ResponseReceived(this, e);
     }
 }
예제 #2
0
        private void ProcessReceive(SocketAsyncEventArgs e)
        {
            if (e.SocketError == SocketError.Success)
            {
                // Received data from server
                string dataFromServer = Encoding.UTF8.GetString(e.Buffer, 0, e.BytesTransferred);

                Socket sock = e.UserToken as Socket;
                sock.Shutdown(SocketShutdown.Send);
                sock.Close();
                clientDone.Set();

                // Respond to the client in the UI thread to tell him that data was received
                System.Windows.Deployment.Current.Dispatcher.BeginInvoke(() =>
                {
                    ResponseReceivedEventArgs args = new ResponseReceivedEventArgs();
                    args.response = dataFromServer;
                    OnResponseReceived(args);
                });
            }
            else
            {
                clientDone.Set();
                throw new SocketException((int)e.SocketError);
            }
        }
예제 #3
0
        void handler_ResponseReceived(object sender, ResponseReceivedEventArgs e)
        {
            previousPos = currentPos;

            string[] data = e.response.Split('|');
            int.TryParse(data[1], out currentPos);

            if (currentPos != previousPos)
            {
                targetIndex = currentPos;
            }
        }
예제 #4
0
        // Called when a SendAsync operation completes
        private void ProcessSend(SocketAsyncEventArgs e)
        {
            if (e.SocketError == SocketError.Success)
            {
                //Read data sent from the server
                Socket sock = e.UserToken as Socket;

                sock.ReceiveAsync(e);
            }
            else
            {
                clientDone.Set();
                ResponseReceivedEventArgs args = new ResponseReceivedEventArgs();
                args.response = e.SocketError.ToString();
                args.isError  = true;
                OnResponseReceived(args);
            }
        }
예제 #5
0
 private void ProcessConnect(SocketAsyncEventArgs e)
 {
     if (e.SocketError == SocketError.Success)
     {
         // Successfully connected to the server
         // Send data to the server
         byte[] buffer = Encoding.UTF8.GetBytes(dataIn);
         e.SetBuffer(buffer, 0, buffer.Length);
         Socket sock = e.UserToken as Socket;
         sock.SendAsync(e);
     }
     else
     {
         clientDone.Set();
         ResponseReceivedEventArgs args = new ResponseReceivedEventArgs();
         args.response = e.SocketError.ToString();
         args.isError  = true;
         OnResponseReceived(args);
     }
 }