private IEnumerable <string> ReadLineEnumerable() { var @byte = SocketStream.ReadByte(); var symbol = (char)@byte; while (@byte != -1) { var nextSymbol = char.MinValue; if (symbol == '\r' && Socket.Available == 0) { var line = StringBuilder.ToString(); StringBuilder.Clear(); yield return(line); } else if ((@byte = SocketStream.ReadByte()) != -1 && (nextSymbol = (char)@byte) == '\n' && symbol == '\r') { var line = StringBuilder.ToString(); StringBuilder.Clear(); yield return(line); } else if (@byte == -1) { yield return(string.Empty); } else { StringBuilder.Append(symbol); symbol = nextSymbol; } } yield return(string.Empty); }
public object Decode(object sender, SocketClient <object, object, object> client, SocketStream <object, object, object> stream) { MemoryStream ms = new MemoryStream(); byte data; while ((data = (byte)stream.ReadByte()) != 0) { ms.WriteByte(data); } string xml = encoding.GetString(ms.ToArray()); return(NicoXmlRegistry.Deserialize(xml)); }