public bool SendEntity(SendPacket entity, ISendDelivery delivery) { int cursor = 0; int total = entity.GetLength(); Stream stream = entity.GetInputStream(); int count; try { while ((count = stream.Read(mOutBuffer, 0, mBufferSize)) != -1) { // Write mSocket.Send(mOutBuffer, 0, count, SocketFlags.None); cursor += count; // Post progress delivery.PostSendProgress(entity, total, cursor); } return(true); } catch (IOException e) { Console.WriteLine(e.Message); } finally { CloseStream(stream); } return(false); }
/// <summary> /// Init send data head info /// </summary> private void SendHead() { // Init Head int size; mTotal = mPacket.GetLength(); if (mTotal <= 0) { size = 0; } else { // Type Buffer[0] = mPacket.GetPacketType(); // Length byte[] lenBytes = BitConverter.GetBytes(mTotal); lenBytes.CopyTo(Buffer, 1); // Info short infoLen = mPacket.ReadInfo(Buffer, HeadSize); byte[] infoLenBytes = BitConverter.GetBytes(infoLen); infoLenBytes.CopyTo(Buffer, HeadSize - 2); size = HeadSize + infoLen; } // Check packet size if (size > 0) { // Init Size mCursor = 0; mProgress = 0; // Post Start NotifyProgress(); // Init the packet mPacket.StartPacket(); // Send Head SendAsync(0, size); } else { // Send next mPacket = null; SendNext(); } }
public bool SendHead(SendPacket entity) { int length = entity.GetLength(); if (length <= 0) { return(false); } try { byte[] lenBytes = BitConverter.GetBytes((length)); // Send Type mSocket.Send(new byte[] { (byte)entity.GetType() }, SocketFlags.None); // Send Length mSocket.Send(lenBytes, 0, 4, SocketFlags.None); return(true); } catch (Exception e) { Console.WriteLine(e.Message); return(false); } }