void ReadSocket()
{
byte[] readBuffer = new byte[1024 * 256];
int offset = 0;
while (true)
{
if (mSocket == null || !mSocket.Connected)
{
mSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Connect(mNodeAddress, mPort);
}
if (mSocket != null && mSocket.Connected && mSocket.Available > 0)
{
try
{
int recieved = mSocket.Receive(readBuffer, offset, readBuffer.Length - offset, SocketFlags.None);
if (recieved > 0)
{
int dataSize = offset + recieved;
int consumed = DisptachPacket(readBuffer, dataSize);
if (consumed < dataSize)
{
int remaining = dataSize - consumed;
byte[] temp = new byte[remaining];
Array.Copy(readBuffer, consumed, temp, 0, remaining);
Array.Copy(temp, readBuffer, remaining);
offset = remaining;
}
else
offset = 0;
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
Thread.Sleep(100);
}
}