Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// Callback for received data
- /// </summary>
- private void ReceiveCallback(IAsyncResult ar)
- {
- int len = -1;
- try
- {
- len = this.GetSocket().EndReceive(ar);
- if (len <= 0)
- throw new Exception("Received " + len);
- }
- catch (Exception e)
- {
- if (ErrorEvent != null)
- ErrorEvent(this, e);
- return;
- }
- // TODO: Implement event for received data
- // Retrieve the header object
- Header headerObject = (Header)ar.AsyncState;
- // Get the data length
- int dataLength = BitConverter.ToInt32(headerObject.headerBytes, 0);
- // Create a packet
- Packet packet = new Packet();
- int bytesRead = 0;
- // Read until the total length has been received
- do
- {
- // Temporary array
- byte[] tmpArray = new byte[1024];
- // Receive
- int i = GetSocket().Receive(tmpArray, tmpArray.Length, SocketFlags.None);
- bytesRead += i;
- // Add to packet
- packet.WriteBytes(tmpArray, i);
- }
- while (bytesRead < dataLength);
- // OK proceed
- if (DataReceivedEvent != null)
- DataReceivedEvent(this, packet);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement