public static Socks4Request From(IByteReceiver receiver) { var structSize = Marshal.SizeOf(typeof(Socks4RequestHeader)); var requestHeader = Socks4RequestHeaderFabric.FromHeader(receiver.Receive(structSize)); var userName = ReadUserName(receiver); var socks4Request = new Socks4Request { Header = requestHeader, UserName = userName }; return(socks4Request); }
private static string ReadUserName(IByteReceiver clientToHandle) { byte readedByte; var username = new List <byte>(); do { readedByte = clientToHandle.Receive(1).First(); if (readedByte == 0) { break; } username.Add(readedByte); } while (true); return(Encoding.ASCII.GetString(username.ToArray())); }