, , , :
socket.writeByte( byte )
, .
NetworkStream clientStream = tcpListener.AcceptTcpClient().GetStream();
byte[] message = new byte[4096];
int bytesRead;
while (true)
{
bytesRead = 0;
try
{
bytesRead = clientStream.Read(message, 0, 4096);
}
catch
{
break;
}
if (bytesRead == 0)
{
break;
}
ASCIIEncoding encoder = new ASCIIEncoding();
String received = encoder.GetString(message, 0, bytesRead);
for (int i = 0; i < bytesRead; i++)
{
if (message[i] == MESSAGE_BEGIN)
{
player.currentMessage = new Message();
}
else if (message[i] == MESSAGE_END)
{
_GotMessage(player, player.currentMessage);
}
else if (message[i] == TYPE_BEGIN)
{
player.currentString = "";
}
else if (message[i] == TYPE_END)
{
player.currentMessage.Type = player.currentString;
}
else if (message[i] == STRING_PARAM_BEGIN)
{
player.currentString = "";
}
else if (message[i] == STRING_PARAM_END)
{
int val;
bool isInt = Int32.TryParse(player.currentString, out val);
if (isInt)
{
player.currentMessage.content.Add(val);
}
else
{
player.currentMessage.content.Add(player.currentString);
}
}
else
{
player.currentString += System.Convert.ToChar(message[i]);
}
}
}
, , - , , . #