public bool ReadString(out string result)
{
uint byteLen;
if (ReadVariableUInt32(out byteLen) == false)
{
result = String.Empty;
return false;
}
if (byteLen <= 0)
{
result = String.Empty;
return true;
}
if (m_bitLength - m_readPosition < (byteLen * 8))
{
result = String.Empty;
return false;
}
if ((m_readPosition & 7) == 0)
{
// read directly
result = System.Text.Encoding.UTF8.GetString(m_data, m_readPosition >> 3, (int)byteLen);
m_readPosition += (8 * (int)byteLen);
return true;
}
byte[] bytes;
if (ReadBytes((int)byteLen, out bytes) == false)
{
result = String.Empty;
return false;
}
result = System.Text.Encoding.UTF8.GetString(bytes, 0, bytes.Length);
return true;
}
NetBuffer::ReadString ( ) : string |
private void receive() { NetBuffer buffer = new NetBuffer(); bool keepGoing = true; while (keepGoing) { NetIncomingMessage message; while ((message = client.ReadMessage()) != null) { switch (message.MessageType) { case NetIncomingMessageType.DebugMessage: Console.WriteLine(buffer.ReadString()); break; case NetIncomingMessageType.StatusChanged: Console.WriteLine("New status: " + client.Status + " (Reason: " + buffer.ReadString() + ")"); if(client.Status != NetPeerStatus.Running) { keepGoing = false; break; } break; case NetIncomingMessageType.Data: // Handle data in buffer here break; } } } }