private void StartReceive() { if (State != ConnectionState.Working) { return; } try { if (!BaseSocket.ReceiveAsync(SocketReceiveArgs)) { ReceiveProcess(SocketReceiveArgs); } } catch { Close(); } }
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."); } }
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(); } }