예제 #1
0
 private void StartReceive()
 {
     if (State != ConnectionState.Working)
     {
         return;
     }
     try
     {
         if (!BaseSocket.ReceiveAsync(SocketReceiveArgs))
         {
             ReceiveProcess(SocketReceiveArgs);
         }
     }
     catch
     {
         Close();
     }
 }
예제 #2
0
        public void ReceiveAsync()
        {
            if (IsClient)
            {
                var block    = BufferPool.Pop();
                var readArgs = SocketPool.Pop();

                readArgs.UserToken    = block;
                readArgs.AcceptSocket = BaseSocket;
                readArgs.SetBuffer(block.Bytes, block.Offset, block.Capacity);
                readArgs.Completed += OnSocketCompleted;

                var willRaiseEvent = BaseSocket.ReceiveAsync(readArgs);
                if (!willRaiseEvent)
                {
                    ReceiveHandle(readArgs);
                }
            }
            else
            {
                RaiseFault("Only accepted client sockets may read and write.");
            }
        }
예제 #3
0
        private static async Task Handle()
        {
            using var client = new Socket(SocketType.Stream, ProtocolType.Tcp);

            while (true)
            {
                try {
                    await BaseSocket.ConnectAsync(client, Listener.IpAddress, 11000);

                    var sentBytes = await BaseSocket.SendAsync(client, "Message", Encoding.UTF8);

                    System.Console.WriteLine($"SentBytes:{sentBytes}");

                    var receiveMessage = await BaseSocket.ReceiveAsync(client, Encoding.UTF8);

                    System.Console.WriteLine($"receiveMessage:{receiveMessage}");
                } finally {
                    client.Shutdown(SocketShutdown.Both);
                    client.Close();
                }
                System.Console.WriteLine();
            }
        }