コード例 #1
0
        private void ReceiveCallback(IAsyncResult asyncResult)
        {
            try
            {
                // Retrieve the state object and the clientSocket socket from the asynchronous state object.
                CallbackReceiveState callbackReceiveState = ( CallbackReceiveState )asyncResult.AsyncState;

                // Read data from the remote device.
                int bytesRead = ConnectedSocket.EndReceive(asyncResult);

                if (bytesRead > 0)
                {
                    Logger.WriteEntry("ReceiveCallBack() Received " + bytesRead.ToString());

                    // Accumulate the received text.
                    string receivedText = Encoding.ASCII.GetString(callbackReceiveState.ReceiveBuffer, 0, bytesRead);
                    callbackReceiveState.Sb.Append(receivedText);

                    // Recursively get the rest of the data.
                    BeginReceive();
                }
                else
                {
                    Logger.WriteEntry("ReceiveCallBack() Received 0 bytes.  Should be done. ");

                    //	All the text has arrived.
                    if (callbackReceiveState.Sb.Length > 1)
                    {
                        this.ReceivedText = callbackReceiveState.Sb.ToString();
                    }
                    Logger.WriteEntry("ReceiveDoneEvent.Set() to signal completion.");
                    //	Signal the completion of the message.
                    ReceiveDoneEvent.Set();
                }
            }
            catch (Exception e)
            {
                Logger.WriteEntry(e.ToString());
            }
        }
コード例 #2
0
 protected void InitializeAsyncReceive()
 {
     ReceivedText = "";
     ReceiveDoneEvent.Reset();
     ReceiveState = new CallbackReceiveState();
 }