Example #1
0
        private void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                int receied = _clientSocket.EndReceive(ar);
                if (receied == 0)
                {
                    _serverSocket.BeginAccept(new AsyncCallback(AcceptCallBack), null);
                    return;
                }
                Array.Resize(ref buffer, receied);
                string text = Encoding.ASCII.GetString(buffer);

                _ta.Insert(text, DateTime.Now);

                buffer = new byte[_clientSocket.ReceiveBufferSize * 100];
                _clientSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, null);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                buffer = new byte[_clientSocket.ReceiveBufferSize * 100];
                _clientSocket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, null);
            }
        }
Example #2
0
        public void RecieveCallBack(IAsyncResult ar)
        {
            try
            {
                Socket socket = ar.AsyncState as Socket;
                if (socket != null)
                {
                    SocketError sockErr;
                    int         received = socket.EndReceive(ar, out sockErr);
                    if (sockErr != SocketError.Success)
                    {
                        received = 0;
                    }

                    if (received > 0)
                    {
                        // _buffer = new byte[received];
                        //byte[] dataBuff = new byte[received];
                        //Array.Copy(_buffer, dataBuff, received);
                        Array.Resize(ref Buffer, received);
                        var text = Encoding.ASCII.GetString(Buffer);

                        _ta.Insert(text, DateTime.Now);


                        //Array.Clear(_buffer, 0, _buffer.Length);
                        //Array.Clear(dataBuff, 0, dataBuff.Length);


                        socket.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, new AsyncCallback(RecieveCallBack), socket);
                        ServerSocket.BeginAccept(AcceptCallBack, null);
                    }
                }
            }
            catch (SocketException ex)
            {
                Console.WriteLine(@"SocketException RecieveCallBack Err: " + ex.Message);
            }
        }
Example #3
0
        public void RecieveCallBack(IAsyncResult ar)
        {
            try
            {
                Socket      socket = ar.AsyncState as Socket;
                SocketError sockErr;
                if (socket != null)
                {
                    int received = socket.EndReceive(ar, out sockErr);
                    if (sockErr != SocketError.Success)
                    {
                        received = 0;
                    }

                    if (received > 0)
                    {
                        byte[] dataBuff = new byte[received];
                        Array.Copy(Buffer, dataBuff, received);

                        _text = Encoding.ASCII.GetString(dataBuff, 0, dataBuff.Length);
                        //dump text into received data table
                        _ta.Insert(_text, DateTime.Now);


                        socket.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, RecieveCallBack, socket);
                        ServerSocket.BeginAccept(AcceptCallBack, null);
                    }
                }
            }
            catch (SocketException ex)
            {
                Console.WriteLine(@"SocketException RecieveCallBack Err: " + ex.Message);

                Socket socket = ar.AsyncState as Socket;
                socket?.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, RecieveCallBack, socket);
                ServerSocket.BeginAccept(AcceptCallBack, null);
            }
        }
Example #4
0
        private void ReceivedCallBack(IAsyncResult ar)
        {
            try
            {
                Socket clientSocket = (Socket)ar.AsyncState;
                // This is how you can determine whether a socket is still connected.
                bool blockingState = clientSocket.Blocking;
                Console.WriteLine("In ReceivedCallBack...");
                try
                {
                    SocketError se;
                    int         bufferSize = clientSocket.EndReceive(ar, out se);
                    Console.WriteLine("buffer size: " + bufferSize.ToString());

                    if (se != SocketError.Success)
                    {
                        Console.WriteLine("Connection not successfull...");
                    }
                    else if (se == SocketError.ConnectionRefused)
                    {
                        Console.WriteLine("Connection refused...");
                    }
                    else if (se == SocketError.Disconnecting)
                    {
                        var clientIp = clientSocket.RemoteEndPoint.ToString();
                        Console.WriteLine(clientIp + " Disconnecting...");
                    }
                    else
                    {
                        if (bufferSize > 0)
                        {
                            var clientIp = clientSocket.RemoteEndPoint.ToString();
                            Console.WriteLine(clientIp + " Connection established...");
                            Array.Resize(ref _buffer, bufferSize);

                            //handle packet
                            string text = Encoding.ASCII.GetString(_buffer);
                            if (text != String.Empty || text.Length > 0)
                            {
                                _ta.Insert(text, DateTime.Now);
                            }

                            //begin listen again
                            _buffer = new byte[1024 * 5];
                            clientSocket.BeginReceive(_buffer, 0, _buffer.Length, SocketFlags.None, ReceivedCallBack, clientSocket);
                        }
                    }
                }
                catch (SocketException e)
                {
                    // 10035 == WSAEWOULDBLOCK
                    if (e.NativeErrorCode.Equals(10035))
                    {
                        Console.WriteLine("ReceivedCallBack : Still Connected, but the Send would block");
                    }
                    else
                    {
                        Console.WriteLine("ReceivedCallBack : Disconnected: error code {0}!", e.NativeErrorCode);
                    }
                }
                finally
                {
                    clientSocket.Blocking = blockingState;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("ReceivedCallBack err : " + ex.Message);
            }
        }