| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | using System;using System.IO;using System.Net.Sockets;namespace SocketHttpListener{    public class SocketStream : Stream    {        private readonly Socket _socket;        public SocketStream(Socket socket, bool ownsSocket)        {            _socket = socket;        }        public override void Flush()        {        }        public override bool CanRead => true;        public override bool CanSeek => false;        public override bool CanWrite => true;        public override long Length => throw new NotImplementedException();        public override long Position        {            get => throw new NotImplementedException();            set => throw new NotImplementedException();        }        public override void Write(byte[] buffer, int offset, int count)        {            _socket.Send(buffer, offset, count, SocketFlags.None);        }        public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)        {            return _socket.BeginSend(buffer, offset, count, SocketFlags.None, callback, state);        }        public override void EndWrite(IAsyncResult asyncResult)        {            _socket.EndSend(asyncResult);        }        public override void SetLength(long value)        {            throw new NotImplementedException();        }        public override long Seek(long offset, SeekOrigin origin)        {            throw new NotImplementedException();        }        public override int Read(byte[] buffer, int offset, int count)        {            return _socket.Receive(buffer, offset, count, SocketFlags.None);        }        public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)        {            return _socket.BeginReceive(buffer, offset, count, SocketFlags.None, callback, state);        }        public override int EndRead(IAsyncResult asyncResult)        {            return _socket.EndReceive(asyncResult);        }    }}
 |