Пример #1
0
        void AcceptCallback(IAsyncResult ar)
        {
            // Signal the main thread to continue.
            allDone.Set();

            // Get the socket that handles the client request.
            Socket listener = (Socket)ar.AsyncState;
            Socket handler  = listener.EndAccept(ar);

            // Create the state object.
            TCPMessageState state = new TCPMessageState();

            state.workSocket = handler;
            handler.BeginReceive(state.buffer, 0, TCPMessageState.BufferSize, 0,
                                 new AsyncCallback(ReadCallback), state);
        }
Пример #2
0
        public void ReadCallback(IAsyncResult ar)
        {
            String content = String.Empty;

            // Retrieve the state object and the handler socket
            // from the asynchronous state object.
            TCPMessageState state = (TCPMessageState)ar.AsyncState;

            lastCallerClient = state.workSocket;

            // Read data from the client socket.
            int bytesRead = lastCallerClient.EndReceive(ar);

            if (bytesRead > 0)
            {
                // There  might be more data, so store the data received so far.
                state.sb.Append(Encoding.ASCII.GetString(
                                    state.buffer, 0, bytesRead));

                // Check for end-of-file tag. If it is not there, read
                // more data.
                content     = state.sb.ToString();
                LastMessage = content;
                //if (content.IndexOf("<EOF>") > -1)
                //{
                //    // All the data has been read from the
                //    // client. Display it on the console.
                //    Console.WriteLine("Read {0} bytes from socket. \n Data : {1}",
                //        content.Length, content);
                //    // Echo the data back to the client.
                //    // Send(handler, content);
                //    LastMessage = content;
                //}
                //else
                //{
                //    // Not all data received. Get more.
                //    handler.BeginReceive(state.buffer, 0, TCPMessageState.BufferSize, 0,
                //    new AsyncCallback(ReadCallback), state);
                //}
            }
        }